2012-09-07 63 views
0

我試圖做一個功能,測試如果電腦的時間格式是12h24h。目前我有這個功能:測試電腦日期時間格式

string format = DateTime.Now.ToString("tt"); 

if (format == "AM" || format == "PM") 
{ 
    //12h 
} 
else 
{ 
    //24h 
} 

但是這個功能有問題。如果我將格式更改爲12h並且我第一次運行該應用程序,它會告訴我格式爲24h(之前是這樣)。在我再次運行它之後,它會告訴我格式爲12h。問題是該應用程序在第二次運行後告訴我正確的答案。我需要一個能夠正確測試勝利的函數,而不是第二個函數。

該功能將在Form1_Load中進行表格加載測試。

+0

你不知道自己的文化設置,但你確定AM和PM是唯一可能的12小時代號?你將如何處理這個測試的結果* - 你的程序的工作方式有多不同?也許我們可以建議一個更好的整體解決方案... –

+0

在我的設置(IT-IT)我沒有任何'噸',因此格式字符串是空的。 – Steve

+0

我在標籤上嘗試此操作,如果12h格式打開,將顯示上午或下午,但如果24小時格式打開,則不會顯示任何內容! – AnDr3yy

回答

0

CultureInfo應該支持24小時布爾值,但事實並非如此。 然而,這會告訴你,如果系統顯示AM/PM符號:

bool is12hr = CultureInfo.CurrentCulture.DateTimeFormat.ShortTimePattern.Contains("t"); 
+0

如果12h格式打開,將顯示true,否則爲false。但它只有在運行後才能工作。喜歡我的功能!我將結果顯示在標籤上! – AnDr3yy

+0

這對我來說似乎有點危險。你應該解釋爲什麼你只是在尋找一個單一的字符「t」,爲什麼這是足夠的。 – nalply