将DateTimeOffset转换为Int64并返回到DateTimeOffset

时间:2018-09-16 01:21:20

标签: c#

我需要将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(?)

1 个答案:

答案 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");