使用DateTime格式化问题日期

时间:2011-01-14 06:37:20

标签: c# .net datetime datetime-format

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

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

例如:

  • 01/04/2011 03:34:03 PM

但是我遇到以下代码的问题

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

显示:

  

01/04/2011 12 :00:00 AM

而不是

  

01/04/2011 00 :00:00 AM

任何人都知道为什么?

谢谢!

3 个答案:

答案 0 :(得分:11)

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

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

"h"     The hour, using a 12-hour clock from 1 to 12.
"hh"    The hour, using a 12-hour clock from 01 to 12.
"H"     The hour, using a 24-hour clock from 0 to 23.
"HH"    The hour, using a 24-hour clock from 00 to 23.


因此,您需要使用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);

答案 1 :(得分:1)

您已指定需要12小时格式而不是24小时格式,这就是原因。您应该使用HH 24小时。请参阅reference。这应该适合你:

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

答案 2 :(得分:0)

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