Mr *_*ose 6 datetime datetimeoffset
我试图将DateTime.MinValue转换为DateTimeOffset值,但我得到一个ArgumentOutOfRange异常.
我正在查看关于DateTime到DateTimeOffset的隐式转换的MSDN文章,而Exception部分声明我将收到此ArgumentOutOfRange异常;
...应用偏移量产生的协调世界时(UTC)日期和时间早于MinValue....
那么为什么以下代码会抛出异常;
DateTime test = DateTime.MinValue;
DateTimeOffset dto = test;
Run Code Online (Sandbox Code Playgroud)
这仅仅是因为我的时区吗?我在GMT +8,但我对上述代码的理解是测试是使用Unspecified类型创建的.
我正在解决这个问题,只需测试我的DateTime的MinValue,如果是的话,那么使用DateTimeOffset.MinValue代替.
我只是好奇为什么我的未指定的类DateTime对象导致错误.
如果你在GMT + 8,那么本地时间DateTime.MinValue对应的UTC早于时间DateTime.MinValue,因此例外.从您引用的文档:
如果DateTime.Kind属性的值为DateTimeKind.Local或DateTimeKind.Unspecified,则DateTimeOffset对象的日期和时间设置为dateTime,并且其Offset属性设置为等于本地系统当前时区的偏移量.
因此,逻辑上,你将有一个DateTime的MinValue有Offset8个小时,但是这意味着,UTC日期/时间由应用抵消了早于可表示.
(不要忘了,你加一个偏移到UTC以获取本地时间,或减去从当地时间它来获得UTC在野田佳彦时,我们通过使用类型为每个执行此Offset,LocalInstant并且Instant,只允许你执行适当的操作...)