2012-05-20 157 views
3

更新顯示日期時間在英國和美國

我想爲無論是英國還是美國顯示24小時制的日期時間值,取決於其目前的文化,使用通用的方式。

的代碼是下面(不是實際的代碼,它是唯一的問題是):

var dt = new DateTime(2011, 4, 15, 17, 50, 40);   
    Console.WriteLine(dt.ToString("d", new CultureInfo("en-us")) + " " 
     + dt.ToString("H:mm:ss", new CultureInfo("en-us"))); 
    Console.WriteLine(dt.ToString("G", new CultureInfo("en-gb"))); 

結果如下:

/二千零一十一分之十五17點50分40秒
15/04/2011 17:50:40

它顯示ok。

有沒有更好的方法來顯示時間而不使用「H:mm:ss」。請注意G的美國展示PM,這不是我想要的。

這個月是4美國,而不是04,有沒有辦法顯示它在。 。

更新

下面是我想要的,最理想的是採用一般方法:

美國:2011年4月15日17時五十分40秒
UK:15/04/2011 17:50 :40

回答

2

試試這個。

DateTime dt = new DateTime(2011, 4, 15, 17, 50, 40);   
Console.WriteLine(dt.ToString("MM/dd/yyy H:mm:ss"));// US format 
Console.WriteLine(dt.ToString("dd/MM/yyy H:mm:ss"));// UK format 

Custom Date and Time Format Strings從MSDN

0

你能爲我們做這樣的事情:

CultureInfo ci = new CultureInfo("en-us", true); 
ci.DateTimeFormat.ShortDatePattern = "MM/dd/yyyy"; 
ci.DateTimeFormat.LongTimePattern = "HH:mm:ss"; 
ci.DateTimeFormat.AMDesignator = ""; 
ci.DateTimeFormat.PMDesignator = ""; 

現在你可以設置當前線程的文化是這樣的:

Thread.CurrentThread.CurrentCulture = ci; 
Thread.CurrentThread.CurrentUICulture = ci; 

而且顯示如下所示的日期:

Console.WriteLine(dt.ToString("G")); 

或者你也可以通過文化作爲參數傳遞給ToString方法是這樣的:

Console.WriteLine(dt.ToString("G", ci)); 

如果你更喜歡第二種方法,你可以在一個靜態方法包裝上面的代碼,所以你可以這樣調用它這個:

Console.WriteLine(dt.ToString("G", Cultures.EnUs)); 
相關問題