我需要将DateTimeOffset添加到我维护的二进制序列化库中。使用DateTime,我只是将刻度保存为Int64,但DateTimeOffset没有将刻度作为构造函数。如何正确重建它?
示例
DateTime date = new DateTime.Now;
long ticks = date.Ticks;
DateTime date2 = new DateTime(ticks);
DateTimeOffset dateOffset = new DateTimeOffset.Now;
long ticks2 = dateOffset.Ticks;
DateTimeOffset dateOffset2 = new DateTimeOffset(?)
答案 0 :(得分:0)
DateTimeOffset没有刻度作为构造函数
它确实有一个takes ticks plus an offset…
的构造函数。DateTimeOffset(Int64, TimeSpan)
…和TimeSpan可以构造为from a ticks value…
TimeSpan(Int64)
...因此,您可以将DateTimeOffset
序列化为两个 Int64
值...
DateTimeOffset dto = DateTimeOffset.Now;
var ticks = dto.Ticks;
var offset = dto.Offset.Ticks;
DateTimeOffset newDto = new DateTimeOffset(ticks, new TimeSpan(offset));
Debug.Assert(dto.EqualsExact(newDto), "DateTmeOffset Mismatch");