DateTime.Now.ToString (“рррр-ММ-дд год: мм: сс”) повертає AM-час замість PM-часу?


75

Я намагаюся визначити поточний час через DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")

Однак це виплювання часу на 12 годин від того, що ми хочемо.

Наприклад:

Що це виплюває: 11/14/2011 2:24:56 am

Що ми хочемо: 11/14/2011 2:24:56 pm

Яку нуб-помилку ми робимо?

Будь-яка допомога дуже вдячна :)


2
Куди додається маркер am / pm, оскільки його немає у вашому рядку форматування, наприклад 'tt'?
Шон Уайльд,

7
З якоїсь причини те, що ви говорите, що рядок формату виробляє ( 11/14/2011 2:24:56 am), сильно відрізняється від того, що, як я очікую, створить рядок формату, який ви опублікували ( yyyy-MM-dd hh:mm:ss). Ви впевнені в цьому?
Одін

Відповіді:


177

Використовуйте HHдля цілодобового формату:

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

Або ttспецифікатор формату для AM/PMчастини:

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

Погляньте на спеціальну документацію щодо рядків формату дати та часу .


Мені довелося використовувати MomentJS просто для цього, це економить пекельний час :)
Шехар К. Шарма

5

У C # 6.0 у вас також є новий спосіб форматування дати при використанні інтерполяції рядків, наприклад

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

Не можу сказати, що це краще, але він трохи чистіший, якщо включити відформатований DateTime у довший рядок.

Детальніше про інтерполяцію рядків.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.