DateTime和字符串轉換問題


DateTime和string之間的相互轉換經常碰到,可就這么簡單的一個轉換其中也有些需要注意的地方.

 1         static void Main(string[] args)
 2         {
 3             string format = @"yyyy/MM/dd HH:mm:ss";
 4             DateTimeFormatInfo dtfi = DateTimeFormatInfo.InvariantInfo;
 5 
 6             DateTime dateTime = new DateTime(2014, 11, 2, 17, 30, 00);
 7 
 8             string dateTimeStr1 = dateTime.ToString(format);
 9             string dateTimeStr2 = dateTime.ToString(format, dtfi);
10 
11             Console.WriteLine(Thread.CurrentThread.CurrentCulture.DisplayName);
12             Console.WriteLine(dateTimeStr1);
13             Console.WriteLine(dateTimeStr2);
14 
15             DateTime dateTimeResult;
16             Console.WriteLine(DateTime.TryParseExact(dateTimeStr1, format, null, DateTimeStyles.None, out dateTimeResult));
17             Console.WriteLine(DateTime.TryParseExact(dateTimeStr2, format, dtfi, DateTimeStyles.None, out dateTimeResult));
18 
19             Console.ReadLine();
20         }
View Code

dateTime.ToString(format)如果不傳第二個參數,那么將會使用當前線程的區域設置,使格式化的結果依賴於本機的區域設置.

DateTime.TryParseExact(dateTimeStr1, format, null, DateTimeStyles.None, out dateTimeResult),第三個參數如果為null,也會使用當前線程的區域設置.

由於不能保證所有機器的區域設置都一樣,上面兩句代碼可能會得不到預期的結果.

可以使用特定的區域設置來解決這個問題,或者直接將轉換設置為和區域設置無關,完全由代碼控制.

DateTimeFormatInfo dtfi = DateTimeFormatInfo.InvariantInfo;

string dateTimeStr2 = dateTime.ToString(format, dtfi);

DateTime.TryParseExact(dateTimeStr2, format, dtfi, DateTimeStyles.None, out dateTimeResult);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM