Как мне отформатировать часы в DateTime, чтобы они возвращали 0 вместо 12? - PullRequest
2 голосов
/ 15 июля 2009

По умолчанию час в строке формата для 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» вместо этого?

Ответы [ 5 ]

7 голосов
/ 15 июля 2009

Попробуйте

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

Вот справочная страница .

6 голосов
/ 15 июля 2009

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

string s = dt.ToString("H:mm:ss");
3 голосов
/ 15 июля 2009
string s = (dt.Hour >= 12 ? dt.Hour - 12 : dt.Hour).ToString() +
    dt.ToString(":mm:ss");

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

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

0 голосов
/ 15 июля 2009

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

* 1003 Т.е. *

DateTime dt = новый DateTime (1999, 1, 1, 0, 0, 0); string s = dt.ToString ("H: mm: ss");

0 голосов
/ 15 июля 2009

Вместо «ч: мм: сс» используйте «Ч: мм: сс»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...