DateTimeOffset默认值

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(其中有一个KindUnspecified)转换为UTC,它变得无效.转换在文档中指定:

如果值DateTime.KindDateTimeKind.LocalDateTimeKind.Unspecified,在DateTime新实例的属性设置等于dateTimeOffset属性设置等于本地系统的当前时区的偏移量.

您可以明确指定偏移量:

DateTimeOffset d = new DateTimeOffset(DateTime.MinValue, TimeSpan.Zero);
Run Code Online (Sandbox Code Playgroud)

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

您可能还想考虑使用DateTimeOffset?和指定null缺少"实际"值,而不是仅使用虚拟值.