2013-02-01 126 views
0

我有這樣的:日期時間格式化返回奇怪的結果

DateTime date = new DateTime(); 

,然後我打印出來。下面是結果:

本地主機:

date: 1/1/0001 12:00:00 AM 

在服務器:

date: 1-1-0001 0:00:00 

正確的方法是在本地主機上的一個。如何解決這個問題,爲什麼會發生這種情況?這是相同的代碼。

+7

不同的機器 – sll

+0

它可能是你的服務器有不同的時間和時區 –

+1

對於「奇怪」閱讀「根據記錄的行爲正確的結果」。 –

回答

5

由於不同地區在不同的機器上設置不同。對你有ahve指定格式字符串explciitly相同的格式日期時間輸出:

date.ToString("yyyy-MM-dd HH:mm:ss"); 

而且約翰特別建議在下面的評論,如果你想有在不同的機器上的相同格式的日期時間的輸出,儘管本地區域設置你可以使用InvariantCulture格式提供程序:

date.ToString(CultureInfo.InvariantCulture); 

MSDN

固定區域性是文化不敏感;它與 的英語,但不與任何國家/地區

MSDN相關:

+1

請注意,自定義格式說明符通常最好與不變文化相結合,而標準格式說明符在指定「用戶」文化時適用(例如US)。 –

+0

有趣的是,我知道應該使用「InvariantCulture」完成日誌記錄,所以它是否更好地爲'dateTime.ToString()'指定'InvariantCulture'? – sll

+1

這取決於你想要做什麼。如果您試圖向用戶展示某些內容,則應該在其用戶區域中使用其中一種標準格式。如果你提供的數據可以被另一臺計算機所理解,那麼不變式文化就更合適。 –

0

可以使用不變的文化,以顯示你的約會如果你不太關心格式,只要它一直都是一樣的。

date.ToString(System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat); 
0

顯示日期你那裏顯示的方式,你可以使用:

date.ToString("M/d/yyyy hh:mm:ss tt"); 

或使用格式字符串時:由於不同的區域設置上的

string.Format("date: {0:M/d/yyyy hh:mm:ss tt}", date);