Проблема форматирования даты с помощью DateTime - PullRequest
3 голосов
/ 14 января 2011

Я хочу отобразить дату в этом формате:

  • ММ / дд / гггг ЧЧ: мм: сс тт

например:

  • 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 ]

11 голосов
/ 14 января 2011

Поскольку вы указали 12-часовой формат часов вместо 24-часового.

Документация для метода DateTime.ToString даетполная таблица спецификаторов формата и их значения.Варианты выбора часа:

<b>"h"</b>     The hour, using a 12-hour clock from 1 to 12.
<b>"hh"</b>    The hour, using a 12-hour clock from 01 to 12.
<b>"H"</b>     The hour, using a 24-hour clock from 0 to 23.
<b>"HH"</b>    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 голос
/ 14 января 2011

Вы указали, что хотите использовать 12-часовой формат вместо 24-часового, поэтому. Вы должны использовать HH в течение 24 часов. Пожалуйста, смотрите ссылку . Это должно работать для вас:

string displayedDate = dt.ToString("MM/dd/yyyy HH:mm:ss tt", CultureInfo.InvariantCulture);
0 голосов
/ 14 января 2011

Вы захотите изменить 'hh' на 'H' в вызове ToString ().

...