当前位置:  开发笔记 > 编程语言 > 正文

应用偏移量时表示的例外UTC时间必须在0到10,000年之间。发生在某些计算机上

如何解决《应用偏移量时表示的例外UTC时间必须在0到10,000年之间。发生在某些计算机上》经验,为你挑选了1个好方法。

code在Windows Store应用程序中使用以下命令C#

birthDateTimePicker.Date = DateTime.Now;
if (birthDateTimePicker.Date == DateTime.MinValue)
{
    no_date_lable.Visibility = Visibility.Collapsed;
    birthDateTimePicker.Visibility = Visibility.Collapsed;
}

注意:birthDateTimePicker.Date = DateTime.Now;例如,此行实际上是用户将选择的行,或者它将来自服务器。

但是我在这一行有一个例外:

如果(dt_born_dt == DateTime.MinValue)

引发异常的原因是什么:

应用偏移量时表示的UTC时间必须在0到10,000之间。

真的,我在三台计算机上对此进行了测试,但其中一台却出现错误!

我将系统的时区更改为(UTC-08:00)太平洋时间(美国和加拿大),并且完全没有遇到此异常,并且代码正常工作!

我的问题确实是为什么在系统时区为(UTC+03:30)德黑兰时发生此异常!

对不起,我英语不好



1> CodeCaster..:

因此,您可以进行控制dt_born_dt(请使用有意义的名称,例如birthDateTimePicker,并考虑生日不需要时间,并且最肯定地不能是1年级[目前没有活到2015年的年龄的人],也许使用可以为null的类型)具有Date类型为的属性,该属性DateTimeOffset+3:30调试器显示的值中可见。

现在,此类型具有的隐式转换DateTime,因此,如果执行以下操作:

birthDatePicker.Date = DateTime.MinValue;

它将DateTime.MinValue具有DateTimeKind.Unspecified类型的转换为UTC。这将引发显示的异常,因为您处于GMT +时区:它将从中减去GMT偏移量MinValue,从而产生无效值,如将DateTime.MinValue转换为DateTimeOffset所述。

解决方法:使用DateTimeOffset.MinValue

另外,请勿try-catch在周围使用Parse(Exact); 使用TryParse(Exact)

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有