C# - DateTime.ParseExact 與 DateTime.TryParseExact

摘要:C# - DateTime.ParseExact 與 DateTime.TryParseExact

最近遇到了一個狀況,那就是我的檔案中有這樣的一串日期時間字串

=> string str = "20091014223600";

以往第一個念頭就是...我切...

反正格式固定,前四為西元年後面的部份就以此類推一直到秒,怕讀到的資料會少,那就多個判斷。更了不起的,可能就 正規表示式 就下去了。

不過,這樣寫真的很累,也容易忘記。貼心的微軟有替我們想到,那就是 DateTime.ParseExact 與 DateTime.TryParseExact,以下就來看看範例唄...

01 private void btnParseExact_Click(object sender, EventArgs e)
02 {
03 string str = "20091014223600";
04
05 IFormatProvider ifp = new CultureInfo("zh-TW", true);
06
07 DateTime dt = DateTime.ParseExact(str, "yyyyMMddHHmmss", ifp);
08
09 MessageBox.Show(dt.ToString());
10 }

11
12 private void btnTryParseExact_Click(object sender, EventArgs e)
13 {
14 string str = "20091014223600";
15
16 DateTime dt;
17   
18 DateTime dtNow = DateTime.Now;
19   
20 IFormatProvider ifp = new CultureInfo("zh-TW", true);
21
22 if (DateTime.TryParseExact(str, "yyyyMMddHHmmss", ifp, DateTimeStyles.None, out dt))
23   MessageBox.Show(dt.ToString());
24 else
25   MessageBox.Show(dtNow.ToString());
26 }

結果:



當 string str = "20091014223600"; 改為 string str = "200910142236";,就只會傳回現在的時間。


參考:
DateTime.ParseExact
DateTime.TryParseExact
格式化特定文化特性的日期和時間