更新
我想以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")));
结果如下:
4 / 15/2011 17:50:40
15/04/2011 17:50:40
显示确定。
有没有更好的方法来显示时间而不使用“H:mm:ss”。请注意,美国的G显示PM,这不是我想要的。
美国的月份是4,而不是04,有没有办法在 04 中显示它。
更新
以下是我想要的,理想情况下使用通用方式:
US:04/15/2011 17:50:40
英国:15/04/2011 17:50:40
答案 0 :(得分: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 :(得分:1)
您可以编写自己的自定义显示,
DateTime dt = DateTime.Now;
Console.WriteLine(dt.ToString(@"MM/dd/yy HH\:mm\:ss"));
Console.ReadLine();
// Displays 05/20/12 17:08:37
答案 2 :(得分: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));