【问题标题】:How can I manage Date if it have 24:00 as time?如果日期为 24:00,我该如何管理?
【发布时间】:2012-12-06 15:44:56
【问题描述】:

我有一些来自 XML 文档的数据,例如 2012-12-06T24:00。

问题是当我尝试转换它时:24:00 不存在。所以:

DateTime.Parse(myDateTimeString).Hour

给我这个例外:System.FormatException: The DateTime represented by the string is not supported in calendar System.Globalization.GregorianCalendar.

我该如何解决?

我想到的解决方案是用T00替换(字符串)T24,看起来很可怕......

【问题讨论】:

  • 您是否可以控制创建该日期时间的代码?我会修复它那一侧而不是解析一侧。
  • 当然不是...它是从互联网服务中获取的 XML :)
  • 2012-12-06T24:00 是否与2012-12-06T00:002012-12-07T00:00 相同?第一个将午夜视为午夜,第二个推进到第二天。

标签: c# .net date


【解决方案1】:

DateTime 无法处理。您必须在调用 Parse 之前“清理”您的字符串并处理溢出(取决于“24:00”的实际含义):

DateTime date = DateTime.Parse(myDateTimeString.Replace("T24:00", "T00:00"));

if (myDateTimeString.Contains("T24:00"))
{
    date = date.AddDays(1);
}

编辑:添加了“溢出”部分。

【讨论】:

  • 虽然 OP 没有提到更长时间字符串的可能性,但我仍然倾向于为它编写代码。当你发现你已经修复了“2012-01-01T13:24:00”时,这有点尴尬。
  • T24:00 表示当天结束的午夜
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多