gpt4 book ai didi

asp.net-mvc - 应用偏移时表示的 UTC 时间必须介于 0 到 10,000 年之间。参数名称 : offset

转载 作者:行者123 更新时间:2023-12-03 11:47:37 29 4
gpt4 key购买 nike

我在 ASP.NET MVC3 Controller 中有以下代码:

public PartialViewResult GetCalendar(int? month, int? year)
{
var test = new DateTime((year.HasValue ? year.Value : 1), (month.HasValue ? month.Value : 1), 1);
return PartialView("Calendar", new DateTimeOffset(test));
}

我的 View 模型是 DateTimeOffset?
抛出异常的原因是什么?

最佳答案

DateTimeOffset构造函数首先转换任何 DateTime不是 Kind 'UTC' 到等效的 UTC 时间。然后它会检查 UTC 是否等效 DateTime超出了 DateTimeOffset.MinValue 的范围和 DateTimeOffset.MaxValue ,如果是,将抛出 ArgumentOutOfRangeException类似于你正在经历的。

检查 DateTime.Kind变量 test您正在使用的,如果它不是“UTC”,请计算转换为 UTC 是否会使 DateTimetest 指定超出这些范围 - 根据 MSDN 文档,MinValueMaxValue (UTC)分别是“1/1/0001 12:00:00 AM +00:00”和“12/31/9999 11:59:59 PM +00:00”。

文档 ( DateTimeOffset.MinValue ) 指出:

“在方法执行与 MinValue 的比较之前,任何 DateTimeOffset 值都会转换为协调世界时 (UTC)。这意味着日期和时间接近最小范围但偏移量为正的 DateTimeOffset 值可能会引发异常。例如,值 1/1/0001 1:00:00 AM +02:00 超出范围,因为它在转换为 UTC 时比 MinValue 早一小时。”

还有( DateTimeOffset.MaxValue ):

“在方法将其与 MaxValue 进行比较之前,任何 DateTimeOffset 值都会转换为协调世界时 (UTC)。这意味着日期和时间接近最大范围但偏移量为负的 DateTimeOffset 值可能会引发异常。对于例如,值 12/31/9999 11:00 PM -02:00 超出范围,因为它在转换为 UTC 时比 MaxValue 晚一小时。”

根据文档( DateTimeOffset Constructor ),应用于非 UTC Kind 的偏移量是“本地系统当前时区的偏移量”。

关于asp.net-mvc - 应用偏移时表示的 UTC 时间必须介于 0 到 10,000 年之间。参数名称 : offset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13799214/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com