我有一个包含日期时间这样的字符串...如何解析字符串为日期时间格式在C#
string S="08/18/2013 24:00:00"
DateTime DT = DateTime.ParseExact(S, "MM/dd/yyyy HH:mm:ss", null);
我想将它解析为日期时间,但这样表示异常。 日历System.Globalization.GregorianCalendar中不支持该字符串表示的DateTime。
请告诉我这个问题的任何解决方案。
我有一个包含日期时间这样的字符串...如何解析字符串为日期时间格式在C#
string S="08/18/2013 24:00:00"
DateTime DT = DateTime.ParseExact(S, "MM/dd/yyyy HH:mm:ss", null);
我想将它解析为日期时间,但这样表示异常。 日历System.Globalization.GregorianCalendar中不支持该字符串表示的DateTime。
请告诉我这个问题的任何解决方案。
的问题是用小时为24 DateTime
不支持这一点,据我所知。
选项:
DateTime
,手动替换“24:00:00”和“00:00:00”,当它发生了,记得加了一天之后如果你想保留的信息,它实际上是“结束这一天“你需要单独执行此操作,并将信息与DateTime
/LocalDateTime
一起保存。
你应该也解析与不变的文化,因为其他答案已经建议 - 你不是试图解析文化特定的字符串;你知道确切的隔板等
很好的捕获,我没有注意到24 :) –
是的,它的工作.... – Deeapk
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);
从The "HH" Custom Format Specifier
的“HH”自定义格式说明符(加上任意数量的附加“H” 符)表示通过小时为一个数字23;即 是,该小时由零基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);
这里一个DEMO。
如果你真的想用24:00:00作为一个小时,看一下,它由Jon开发。
只是想到没有时间24:00:00。不知道这是否是你的问题。 – ckv
@ckv:有ISO-8601。这基本上是“一天结束”。 –
@JonSkeet谢谢你这个有趣的事实。 – ckv