2010-08-17 96 views
9

我遇到了一個讓我瘋狂的問題。在我的應用程序(ASP.NET MVC2 /.NET4),我只是跑這樣的:我已經看到指示我應該得到的東西像.NET日期時間不返回AM/PM在ToShortTimeString()

DateTime.Now.ToShortTimeString() 

所有的例子:12:32 PM,但是我得到12:32沒有AM /下午。

我推出了LinqPad 4,看看我是否可以複製這個。相反,它會正確返回12:32 PM

到底是什麼?

+2

只是一個猜測,但這可能是一個本地化問題?你的過程不是在中性文化中運行嗎? – kbrimington 2010-08-17 17:42:15

回答

10

您也可以嘗試一個custom format避免特定文化的困惑:

DateTime.Now.ToString("hh:mm tt") 
1

呀,這取決於你的語言環境。 System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortTimePattern在您的應用程序中的價值是什麼?

MSDN Link

4

KBrimington看起來是正確的:

由ToShortTimeString方法返回的字符串是文化敏感。它反映了當前文化的DateTimeFormatInfo對象定義的模式。例如,對於美國文化,標準的短時間模式是「h:mm tt」;對於DE DE文化,它是「HH:mm」;對於ja-JP文化,它是「H:mm」。特定計算機上的特定格式字符串也可以進行自定義,以使其與標準短時間格式字符串不同。

MSDN

1

您可以設置線程的文化信息,這將然後由ToShortTimeString()方法一起使用。但要明白,這將影響該線程中運行的所有代碼。

System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-us"); 
2

如果你不想惹文化爲您的整個線程/應用程序,試試這個:

CultureInfo ci = new CultureInfo("en-US"); 
string formatedDate = DateTime.Now.ToString("t", ci); 

你可以找到日期時間格式字符串here名單。

1

該函數使用用戶的默認模式。他們可以在控制面板中更改。查看「地區和語言」設置中的第一個標籤。將短時間模式更改爲類似'h:mm tt'的模式,即可完成。

0

這也可能需要CultureInfo.InvariantCulture 例如DateTime.Now.ToString("hh:mm:ss tt", CultureInfo.InvariantCulture)

相關問題