我從文本文件獲取日期&時間 - 我的字符串var在我的C#程序。如何處理意外的日期和時間格式?
我需要將此字符串var轉換爲datetime var。
如何做到這一點,如果我得到意外類型的日期&時間?
如果我不知道主機上的區域類型(當我傳播我的程序)?
感謝的提前
我從文本文件獲取日期&時間 - 我的字符串var在我的C#程序。如何處理意外的日期和時間格式?
我需要將此字符串var轉換爲datetime var。
如何做到這一點,如果我得到意外類型的日期&時間?
如果我不知道主機上的區域類型(當我傳播我的程序)?
感謝的提前
使用的TryParse將返回一個布爾說,如果日期是有效還是無效。
string dateString = "03/01/2009 10:00 AM";
CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US");
DateTimeStyles styles DateTimeStyles.None;
DateTime dateResult;
if(DateTime.TryParse(dateString, culture, styles, out dateResult))
{
do something with dateResult
}
TryParse是你想要的。
DateTime result;
if(!DateTime.TryParse(unpredictableDate, out result))
{
throw new ArgumentException("Argument '" + unpredictableDate + "' was not a recognizable date format.");
}
拒絕它與一個例外是好的。但是,你如何認爲「不良格式」是*更多*信息,那麼當你使用DateTime.Parse時會得到的異常? – 2010-10-15 14:58:22
@Hans,因爲OP可以複製/粘貼我的代碼,而不是僅僅運行它,將它合併到一個更大的框架中,在那裏他可以根據自己的喜好定製錯誤消息。我修改了錯誤信息,使其更有幫助。如果您是批量處理,我會建議將錯誤記錄插入表中以便稍後手動處理,然後繼續批處理。 – Brad 2010-10-15 14:59:35
DateTime.Parse()
使用運行應用程序的PC上的文化設置。這意味着用戶可以輸入他的文化的日期格式。
如果你不希望它這樣解析,然後一直被認爲英語文化設置時指定不變文化。
如果您正在執行特定日期/時間格式,請嘗試使用DateTime.ParseExact
。
小心,2010年2月3日可能是mm/dd/yyyy或dd/mm/yyyy。如果你使用skyfoot的例子,你可能會得到一個有效的日期,但不是正確的日期!
請制定一個精確的方案。 – SLaks 2010-10-15 14:48:15
如果無法預測字符串所處的格式,則幾乎不可能將其正確轉換爲日期時間。 – Carvellis 2010-10-15 14:51:56
http://stackoverflow.com/questions/3933548/可能重複和其他人 – 2010-10-15 18:25:41