代码之家  ›  专栏  ›  技术社区  ›  Greg Finzer

将DateTimeOffset转换为Int64并返回DateTimeOffset

c#
  •  0
  • Greg Finzer  · 技术社区  · 6 年前

    例子

    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 回复  |  直到 6 年前
        1
  •  0
  •   Frank Boyne    6 年前

    DateTimeOffset没有记号作为构造函数

    它确实有一个构造函数 takes ticks plus an offset

    DateTimeOffset(Int64, 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");