Как мне отформатировать часы в DateTime, чтобы они возвращали 0 вместо 12?

2

По умолчанию час в строке формата для DateTime преобразует 0 в 12. Например, если у вас есть

DateTime dt = new DateTime(1999, 1, 1, 0, 0, 0);
string s = dt.ToString("h:mm:ss");

значение s будет "12: 0: 0", а не "0: 0: 0". Есть ли способ получить "0:00:00" вместо?

Теги:
datetime
formatting

5 ответов

7
Лучший ответ

Try

string s = dt.ToString("H:mm:ss");

Здесь ссылка .

  • 0
    Хм. Я думал, что OP хотел 12-часовые часы от взглядов этого. "По умолчанию час ... превращает 0 в 12 ... Есть ли способ получить вместо него" 0:00:00 "?
6

Вы были близки, попробуйте использовать это вместо:

string s = dt.ToString("H:mm:ss");
3
string s = (dt.Hour >= 12 ? dt.Hour - 12 : dt.Hour).ToString() +
    dt.ToString(":mm:ss");

По-видимому, это было не то, что вы искали. То, как я читал ваше сообщение, вы хотели, чтобы 12-часовые часы переводили "12:00" в "0:00" (некоторые международные часы делают это), что и получается. Для этого поведения нет строки формата, поэтому вам нужно создать строку самостоятельно.

Вы также можете прочитать строки DateTime формата здесь.

  • 1
    Это единственный правильный ответ на данный момент, поэтому, очевидно, именно поэтому он был загружен. Способ формулировки вопроса, принятый ответ и другие ответы, которые видны в данный момент, сохраняют 0 как 0, но у них есть побочные эффекты, которые изменяют другие значения, которые не задавался в вопросе. Они изменяют 13:00 с 1 до 13. Они изменяют 11:00 с 11 до 23. И они сохраняют 12 часов дня как 12, хотя формулировка вопроса требует 0 (верните 0 вместо 12). Вот и мы, единственный правильный ответ, опубликованный в этой теме, и он получает отрицательный ответ.
  • 1
    @ Windows Programmer - Спасибо за это; Я рад, что я не единственный, кто читает ОП за чистую монету. :)
Показать ещё 2 комментария
0

Вместо "h: mm: ss" используйте "H: mm: ss"

0

Вам нужно использовать капитал H вместо строчного h внутри метода ToString.

т.е.

DateTime dt = new DateTime (1999, 1, 1, 0, 0, 0); string s = dt.ToString( "H: mm: ss" );

Ещё вопросы

Сообщество Overcoder
Наверх
Меню