【问题标题】:Year, Month, and Day parameters describe an un-representable DateTime Exception年、月和日参数描述了无法表示的 DateTime 异常
【发布时间】:2012-06-28 14:12:23
【问题描述】:

我正在使用以下代码将对象添加到 ASP.NET MVC 3 应用程序内的列表中,但该对象的属性之一给我带来了困难。

ls.Add(new UserRoleModel { UserRoleId = 1, UserName = "Paul", InsertDate = new DateTime(05, 24, 2012),InsertProgram="sqlplus",InsertUser="sp22",Role="Implementation Co-corindator"});

这会构建,但是当我转到相关页面时,我会收到以下类型的异常:

Exception Details: System.ArgumentOutOfRangeException: Year, Month, and Day parameters describe an un-representable DateTime.

我尝试在当月删除 0,但我得到了同样的异常。

【问题讨论】:

  • 也许这与您使用的“文化”有关?您使用的文化是否对每个元素(年、月、日)而不是(月、日、年)具有不同的顺序?
  • msdn.microsoft.com/en-us/library/5hh873ya.aspx 这个链接展示了一些你将如何改变它的例子。

标签: asp.net-mvc-3 c#-4.0


【解决方案1】:

DateTimeconstructor you are calling 接受按年、月、日顺序排列的参数。

您按月、日、年的顺序提供它们——这最终会试图分配无意义的值。该文档非常清楚地说明了允许的值是什么以及如果您将 2012 年作为“日”值会发生什么。

【讨论】:

  • 另外,月份和日期是 1-indexed,所以要获取一年中的第一个月和第一天,请使用 new DateTime(DateTime.Now.Year, 1, 1)(我不知道是否还有其他功能)。
【解决方案2】:

我刚刚遇到了这个问题,我的问题是我在二月份创建了一个日期。我尝试执行以下操作...

new Date(2013, 2, 30)

由于没有 2 月 30 日,因此无法创建日期。当我改为

new Date(2013, 2, 28)

效果很好。

【讨论】:

  • 如果当前年份是闰年,new Date(2013, 2, 28) 将失败(因为 2 月有 29 天,例如今天是 2016 年 2 月 29 日)
  • @kishoreperla 28 将始终有效,无论闰年与否。第一个数字,30,我没有。我相信我已经从一月切换到二月了。
【解决方案3】:

如果 InsertDate 是创建日期/时间,您可以使用以下

DateTime InsertDate  = DateTime.Now;

【讨论】:

    【解决方案4】:

    您使用的日期时间无效,例如一个月,您可能会比 31 天多 13,14 天

    或类似导致问题的东西。

    【讨论】:

      【解决方案5】:

      我遇到了同样的问题,因为我试图创建一个日期设置为 4 月 31 日的 DateTime 对象,即使 4 月只有 30 天。 任何有同样问题的人,确保你没有犯这个错误。

      【讨论】:

        【解决方案6】:

        我解决的异常是:

        DateTimePicker1.Value = DateSerial(Year(Now), Month(Now) + 1, 1)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-08-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多