在英国和美国显示日期时间

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")));

以下是结果:

2011年4月15日17:50:40
2011年4月15日17:50:40

已经正确显示。

有没有更好的方法来显示时间而不使用“H:mm:ss”?请注意,美国的 G 显示为 PM,这不是我想要的。

美国的月份是 4,而不是 04,有没有办法显示04

更新

以下是我想要的,最好使用通用的方式:

美国:04/15/2011 17:50:40
英国:15/04/2011 17:50:40

3个回答

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

自定义日期和时间格式字符串(来自MSDN)


1

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));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接