3

我想以这种格式显示日期:

  • MM/dd/yyyy HH:mm:ss tt

例如 :

  • 2011 年 1 月 4 日下午 03:34:03

但我对以下代码有疑问

class Program
{
    static void Main(string[] args)
    {
        DateTime dt = new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day, 0, 0, 0);
        string displayedDate = dt.ToString("MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);
        Console.WriteLine(displayedDate);
        Console.Read();
    }
}

显示:

2011年 1 月 4 日上午12:00:00

代替

2011 年 1月4 日上午00:00:00

任何人都知道为什么?

谢谢 !

4

3 回答 3

12

因为您指定了 12 小时制格式而不是 24 小时制格式。

该方法的文档提供DateTime.ToString了格式说明符及其含义的完整表格。小时的选择如下:

"h"     小时,使用 12 小时制,从 1 到 12。
 "hh"    小时,使用 12 小时制,从 01 到 12。
 "H"     小时,使用 24 小时制,从 0 到 23 .
 "HH"    小时,使用从 00 到 23 的 24 小时制。


因此,hh您需要使用HH. 更改此行:

string displayedDate = dt.ToString("MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);

对此:

string displayedDate = dt.ToString("MM/dd/yyyy HH:mm:ss tt", CultureInfo.InvariantCulture);
于 2011-01-14T06:41:01.283 回答
1

您已指定要使用 12 小时制而不是 24 小时制,这就是原因。您应该使用HH24 小时。请参阅参考资料。这应该适合你:

string displayedDate = dt.ToString("MM/dd/yyyy HH:mm:ss tt", CultureInfo.InvariantCulture);
于 2011-01-14T06:42:11.860 回答
0

您需要在 ToString() 调用中将 'hh' 更改为 'H'。

于 2011-01-14T06:39:48.787 回答