2012-05-20 77 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)); 
相关问题