摘要: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

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

結果:
當 string str = "20091014223600"; 改為 string str = "200910142236";,就只會傳回現在的時間。
參考:
DateTime.ParseExact
DateTime.TryParseExact
格式化特定文化特性的日期和時間