我想将默认值设置为DateTimeOffset - 它不应该是DateTime.Now而是DateTime.MinValue或default(DateTime)
有什么想法我该怎么办?这段代码:
DateTimeOffset d = new DateTimeOffset(DateTime.MinValue)
抛出异常
答案 0 :(得分:9)
此代码为您抛出异常的原因是您可能处于UTC之前的时区 - 所以当DateTime.MinValue
(Kind
Unspecified
时)被转换为UTC,它变得无效。转换在文档中指定:
如果
DateTime.Kind
的值为DateTimeKind.Local
或DateTimeKind.Unspecified
,则新实例的DateTime
属性设置为dateTime
,{Offset
1}} property设置为等于本地系统当前时区的偏移量。
您可以明确指定偏移量:
DateTimeOffset d = new DateTimeOffset(DateTime.MinValue, TimeSpan.Zero);
这不会导致任何转换......但我相信它与default(DateTimeOffset)
完全相同。 (它更明确,请注意 - 通常是一件好事。)
您可能还想考虑使用DateTimeOffset?
并指定null
缺少“真实”值,而不是仅仅使用虚拟值。