C# 如何在C语言中将字符串解析为日期时间格式#

C# 如何在C语言中将字符串解析为日期时间格式#,c#,C#,我有一个字符串,其中包含日期时间 string S="08/18/2013 24:00:00" DateTime DT = DateTime.ParseExact(S, "MM/dd/yyyy HH:mm:ss", null); 我想将其解析为日期时间,但显示了这样一个异常。 calendar System.Globalization.GregorianCalendar中不支持由字符串表示的日期时间 请告诉我这个问题的解决办法。问题是24小时DateTime不支持此功能 string S="0

我有一个字符串,其中包含日期时间

string S="08/18/2013 24:00:00"
DateTime DT = DateTime.ParseExact(S, "MM/dd/yyyy HH:mm:ss", null);
我想将其解析为日期时间,但显示了这样一个异常。 calendar System.Globalization.GregorianCalendar中不支持由字符串表示的日期时间


请告诉我这个问题的解决办法。

问题是24小时<据我所知,code>DateTime不支持此功能

string S="08/18/2013 00:00:00";  // here is the first problem occurred
DateTime DT = DateTime.ParseExact(S, "MM/dd/yyyy hh:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
选项:

  • 使用我的项目,但基本上通过增加一天来处理它(它不会保留这一天和“前一天结束”之间的差异)
  • 继续使用
    DateTime
    ,在出现“24:00:00”时手动将其替换为“00:00:00”,并记住在之后添加一天
如果您想保留它实际上是“结束”的信息,您需要单独执行此操作,并将信息与
DateTime
/
LocalDateTime
一起保存

您还应该像其他答案所建议的那个样使用不变的区域性进行解析——您并没有试图解析特定于区域性的字符串;您知道确切的分离器等。

来自

“HH”自定义格式说明符(加上任意数量的附加“H” 说明符)以从0023的数字表示小时;那个 也就是说,小时由一个以零为基础的24小时计时时钟表示 从午夜开始的几个小时

因此,在这种情况下,使用
24
作为一小时是无效的

尝试使用
hh
格式,改为使用
00

string S = "08/18/2013 00:00:00";
DateTime DT = DateTime.ParseExact(S, "MM/dd/yyyy hh:mm:ss", CultureInfo.InvariantCulture);
这里有一个


如果你真的想用24:00:00作为一个小时,看看由开发的。

只是一个想法没有时间24:00:00。不知道这是否是你的问题。@ckv:ISO-8601中有。这是“一天的末日”。J.J.斯基特感谢这个有趣的事实。@ USE18182191考虑接受一个答案。很好的捕捉,我没有注意到24: