DateTime.Now.ToString(yyyy-MM-dd hh:mm:ss) возвращает время AM вместо времени PM?

Я пытаюсь получить текущее время через DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")

Тем не менее, это выплевывает время на 12 часов меньше, чем мы хотим.

Например:

Что выплевывает: 11/14/2011 2:24:56 am

Что мы хотим: 11/14/2011 2:24:56 pm

Какую ошибку нуба мы делаем?

Любая помощь приветствуется :)


person Community    schedule 14.11.2011    source источник
comment
Где добавляется маркер am/pm, поскольку его нет в вашей строке форматирования, например. 'т'?   -  person Shaun Wilde    schedule 15.11.2011
comment
По какой-то причине то, что вы говорите, что строка формата создает (11/14/2011 2:24:56 am), сильно отличается от того, что я ожидаю от строки формата, которую вы разместили (yyyy-MM-dd hh:mm:ss). Вы в этом уверены?   -  person Oded    schedule 15.11.2011


Ответы (2)


Используйте HH для 24-часового формата:

DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")

Или спецификатор формата tt для части AM/PM:

DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss tt")

Ознакомьтесь с документацией по строкам пользовательского формата даты и времени.

person Oded    schedule 14.11.2011
comment
Мне пришлось использовать MomentJS только для этого, это экономит чертовски много времени :) - person Shekhar K. Sharma; 28.05.2015

С C # 6.0 у вас также есть новый способ форматирования даты при использовании интерполяции строк, например.

$"{DateTime.Now:yyyy-MM-dd HH:mm:ss}"

Не могу сказать, что это лучше, но это немного чище, если включить отформатированное DateTime в более длинную строку.

Подробнее об интерполяции строк.

person Callum    schedule 12.06.2018