using Luban.Job.Cfg.DataVisitors; using System; namespace Luban.Job.Cfg.Datas { public class DDateTime : DType { public DateTime Time { get; } //public int UnixTime { get; } private readonly int _localTime; public DDateTime(DateTime time) { this.Time = time; // time.Kind == DateTimeKind.Unspecified // DateTimeOffset把它当作Local处理 this._localTime = (int)new DateTimeOffset(time).ToUnixTimeSeconds(); } public int GetUnixTime(TimeZoneInfo asTimeZone) { if (asTimeZone == null || asTimeZone == TimeZoneInfo.Local) { return this._localTime; } else { var destDateTime = TimeZoneInfo.ConvertTime(Time, asTimeZone, TimeZoneInfo.Utc); return (int)new DateTimeOffset(destDateTime).ToUnixTimeSeconds(); } } public override void Apply(IDataActionVisitor visitor, T x) { visitor.Accept(this, x); } public override void Apply(IDataActionVisitor visitor, T1 x, T2 y) { visitor.Accept(this, x, y); } public override TR Apply(IDataFuncVisitor visitor) { return visitor.Accept(this); } public override TR Apply(IDataFuncVisitor visitor, T x) { return visitor.Accept(this, x); } } }