DateTimeOffset 默认值

DateTimeOffset default value

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

有什么想法我该怎么做?此代码:

DateTimeOffset d = new DateTimeOffset(DateTime.MinValue)

抛出异常

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

If the value of DateTime.Kind is DateTimeKind.Local or DateTimeKind.Unspecified, the DateTime property of the new instance is set equal to dateTime, and the Offset property is set equal to the offset of the local system's current time zone.

尽管您可以明确指定偏移量:

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

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

您可能还想考虑使用 DateTimeOffset? 并在缺少 "real" 值时指定 null,而不是仅使用虚拟值。