Yak*_*kov 2 default datetimeoffset
我想将默认值设置为DateTimeOffset - 它不应该是DateTime.Now而是DateTime.MinValue或default(DateTime)
有什么想法我该怎么办?这段代码:
DateTimeOffset d = new DateTimeOffset(DateTime.MinValue)
Run Code Online (Sandbox Code Playgroud)
抛出一个例外
Jon*_*eet 10
这个代码抛出你的一个例外的原因是,你在为协调世界时的时区是可能-所以当DateTime.MinValue(其中有一个Kind的Unspecified)转换为UTC,它变得无效.转换在文档中指定:
如果值
DateTime.Kind是DateTimeKind.Local或DateTimeKind.Unspecified,在DateTime新实例的属性设置等于dateTime和Offset属性设置等于本地系统的当前时区的偏移量.
您可以明确指定偏移量:
DateTimeOffset d = new DateTimeOffset(DateTime.MinValue, TimeSpan.Zero);
Run Code Online (Sandbox Code Playgroud)
这不会导致任何转换...但我相信它完全等同于default(DateTimeOffset).(它更明确,请注意 - 通常是一件好事.)
您可能还想考虑使用DateTimeOffset?和指定null缺少"实际"值,而不是仅使用虚拟值.