2014-10-05 115 views
0

我有一個DateTime C#對象(在Unity腳本中,針對Android設備)。我想通過.toString()(因此沒有任何特殊的格式參數)來檢索一個字符串表示,它應該提供一個簡短的表格,比如「10/5/2014 9.17 PM」。如果我現在在地區設置爲例如德語,只是時間會正確轉換,而日期保持美國格式(所以「2014年10月5日21.17」而不是「5.10.2014 21.17」)。 我在這裏做錯了什麼,或者我根本不明白整個事情;-)將c#dateTime格式化爲本地字符串格式

回答

2

你對DateTime.ToString的假設是正確的。下面的代碼打印2014年5月10日十三點26分36秒:

Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE"); 
DateTime time = DateTime.Now; 
Console.WriteLine(time.ToString()); 

我檢查什麼的Thread.CurrentThread.CurrentCulture.ToString()值是在您的環境,並確保統一正確設置它。如果沒有,你必須自己做。

+1

或者只是簡單的'time.ToString(new CultureInfo(「de-DE」))' – GregoryHouseMD 2014-10-05 18:33:00

+0

這將有與上面相同的輸出,但這聽起來像他想要依賴線程的文化被正確設置來輸出日期以用戶的首選格式。 – 2014-10-05 18:34:49

+0

對,它應該根據當前的語言環境進行格式化。 一個奇怪的觀察:當我把下面的行權在字符串格式化的前面,它正常工作: 'Thread.CurrentThread.CurrentCulture = CultureInfo.CurrentCulture;' AFAIK CultureInfo.CurrentCulture原則上應回Thread.CurrentThread .CurrentCulture,所以上面的說法沒有多大意義。但是,這種方式...起作用......很奇怪。 – habitoti 2014-10-05 19:02:05