|
在開發(fā)中,常常會有DataTime類型和String類型的互相轉(zhuǎn)換的要求,比較常用的寫法是 var date = Convert.ToDateTime("2012/06/08 09:10:10");
咋一看這個代碼好像沒有什么問題, 實際運行也沒發(fā)現(xiàn)問題。但是客戶的機器上卻是有轉(zhuǎn)換的異常。 后來經(jīng)過調(diào)查發(fā)現(xiàn),客戶電腦上系統(tǒng)設(shè)置的CultureInfo是西班牙。這樣代碼會認(rèn)為2012/06/08 09:10:10 不是一個合法的日期字符串。
正確的寫法應(yīng)當(dāng)是: var dtFormat = new DateTimeFormatInfo {LongDatePattern = "yyyy/MM/dd hh:mm:ss"}; //指定以特定格式轉(zhuǎn)換成DateTime var date = Convert.ToDateTime("2012/06/08 09:10:10", _dtFormat)
DateTime轉(zhuǎn)換成字符串 var dateString = System.DateTime.Now.ToString()
這樣轉(zhuǎn)換的字符串同樣會根據(jù)運行的系統(tǒng)的CultureInfo不同而有不同格式的輸出。 對于WCF, Web service, Ajax這樣的客戶端和服務(wù)端如果是不同的CultureInfo的情況下,非常容易出錯。
在轉(zhuǎn)換成字符串的時候,加上CultureInfo.InvariantCulture var dateString = System.DateTime.Now.ToString(CultureInfo.InvariantCulture)
同時在從字符串轉(zhuǎn)換回來的時候, var date = DateTime.Parse(serverInfo.ServerDateTimeString, CultureInfo.InvariantCulture)
這個CultureInfo有點像英語格式,但它不和國家地區(qū)掛鉤,它可以提供一個可靠的在多語言環(huán)境下的規(guī)范格式化 |
|
|
來自: 悟靜 > 《.net和asp.net》