DateTimeOffset默认值

时间:2015-02-25 13:15:20

标签: default datetimeoffset

我想将默认值设置为DateTimeOffset - 它不应该是DateTime.Now而是DateTime.MinValue或default(DateTime)

有什么想法我该怎么办?这段代码:

DateTimeOffset d = new DateTimeOffset(DateTime.MinValue)

抛出异常

1 个答案:

答案 0 :(得分:9)

此代码为您抛出异常的原因是您可能处于UTC之前的时区 - 所以当DateTime.MinValueKind Unspecified时)被转换为UTC,它变得无效。转换在文档中指定:

  

如果DateTime.Kind的值为DateTimeKind.LocalDateTimeKind.Unspecified,则新实例的DateTime属性设置为dateTime,{Offset 1}} property设置为等于本地系统当前时区的偏移量。

您可以明确指定偏移量:

DateTimeOffset d = new DateTimeOffset(DateTime.MinValue, TimeSpan.Zero);

这不会导致任何转换......但我相信它与default(DateTimeOffset)完全相同。 (它更明确,请注意 - 通常是一件好事。)

您可能还想考虑使用DateTimeOffset?并指定null缺少“真实”值,而不是仅仅使用虚拟值。