2011-06-01 92 views
25

我正在尋找一個解決方案來獲取系統日期時間格式。如何獲取系統日期時間格式?

例如:如果我得到DateTime.Now?這是使用哪種日期時間格式? DD/MM/YYYY

+0

你想獲得特定格式的日期時間?那麼我們需要知道你想要幫助你的格式。 – 2011-06-01 07:57:14

+0

要明確,DateTime.Now不是任何格式。它純粹是一個二進制數。 – pm100 2017-10-18 21:48:21

回答

41

如果它沒有被其他地方的改變,這會得到它:

string sysFormat = CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern; 

如果使用WinForms應用程序,你也可以看看的UICulture:

string sysUIFormat = CultureInfo.CurrentUICulture.DateTimeFormat.ShortDatePattern; 

注意DateTimeFormat是一個讀寫屬性,所以可以被更改。

+3

調用'CultureInfo.CurrentCulture.DateTimeFormat;'不返回字符串值。最後的調用應該是'string sysDateFormat = CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern;'以防你正在尋找系統短日期格式。 – 2014-01-15 19:45:26

+0

@JoeAlmore - 感謝您的評論。答案已更新。 – Oded 2014-01-15 19:50:23

1

System.DateTime.Now屬性返回一個System.DateTime。它以二進制格式存儲在內存中,絕大多數程序員在大多數情況下都不需要考慮。當您顯示DateTime值或將其轉換爲任何其他原因的字符串時,它將根據格式字符串進行轉換,該字符串可指定您喜歡的任何格式。

在這最後的意義上,你的問題的答案是「如果我得到DateTime.Now,哪個日期時間格式是使用?」是「它根本沒有使用任何DateTime格式,因爲你還沒有格式化它」。

可以通過調用ToString的重載來指定格式,或者如果使用System.String.Format,則可以(可選)指定格式。還有一個默認格式,所以你不一定要指定格式。如果你在問如何確定默認格式,那麼你應該看看Oded的答案。

11

上面的答案並不完全正確。

我有一個情況,我的主線程和我的UI線程被迫在「en-US」文化(按設計)。 我的Windows DateTime格式爲 「DD/MM/YYYY」

string sysFormat = CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern; 
string sysUIFormat = CultureInfo.CurrentUICulture.DateTimeFormat.ShortDatePattern; 

返回 「MM/DD/YYYY」,但我希望得到我的真正的Windows格式。 我能做到的唯一方法就是創建一個虛擬線程。

System.Threading.Thread threadForCulture = new System.Threading.Thread(delegate(){}); 
string format = threadForCulture.CurrentCulture.DateTimeFormat.ShortDatePattern; 
相關問題