我有一个包含日期时间的字符串......
string S="08/18/2013 24:00:00"
DateTime DT = DateTime.ParseExact(S, "MM/dd/yyyy HH:mm:ss", null);
我想将其解析为日期时间,但显示了这样的异常。 日历System.Globalization.GregorianCalendar中不支持字符串表示的DateTime。
请告诉我这个问题的任何解决方案。
答案 0 :(得分:10)
问题是小时是24小时。DateTime
不支持这个,据我所知。
选项:
DateTime
,手动将“24:00:00”替换为“00:00:00”,并记得在之后添加一天如果您想保留实际上“当天结束”的信息,则需要单独执行此操作,并将信息与DateTime
/ LocalDateTime
一起保留。
你应该 解析其他答案所建议的不变文化 - 你不是要解析一个特定于文化的字符串;你知道确切的分隔符等。
答案 1 :(得分:1)
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);
答案 2 :(得分:0)
来自The "HH" Custom Format Specifier
“HH”自定义格式说明符(加上任意数量的附加“H”) 说明符)将小时表示为从 00 到 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。