摘要: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 }
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
格式化特定文化特性的日期和時間