我有一個包含日期時間這樣的字符串...如何解析字符串爲日期時間格式在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