DateTime.Value.ToString(формат) дает мне 12-часовые часы
Расширение этого вопроса, я вытаскиваю дату из базы данных и отображаю ее в сетке.
У меня есть следующий код:
string date = "";
DateTime? dateSent;
if (row["DateSent"] != DBNull.Value)
dateSent = (DateTime)row["DateSent"];
else dateSent = null;
date = (dateSent.HasValue ? dateSent.Value.ToString("dd/MM/yyyy hh:mm:ss") : null);
Когда я добавляю точку останова в конце этого блока кода, я вижу, что переменная DateTime?
dateSent имеет 24-часовую временную метку времени, например, 14:50:34. Однако, когда я проверяю значение переменной string
"date" - он имеет 12-часовой формат часов, например, 02:50:34.
Я не намерен конвертировать в 12-часовой формат часов. У меня есть два вопроса:
- Почему DateSent.Value.ToString( "dd/MM/yyyy hh: mm: ss" ) возвращает 12-часовую метку времени?
- Как я могу избежать этого и использовать 24-часовую версию часов?
Ответы
Ответ 1
Почему DateSent.Value.ToString( "dd/MM/yyyy hh: mm: ss" ) возвращает 12-часовую метку времени?
Потому что вы просите об этом. То, что означает hh
. hh
- 24 часа.
В случае сомнений прочитайте документацию пользовательских строк формата даты и времени.
hh
документируется как
Час, используя 12-часовые часы с 01 до 12.
hh
документируется как:
Час, используя 24-часовые часы от 00 до 23.
В качестве дополнительного примечания, этот комментарий предполагает потенциальную концептуальную ошибку:
Я вижу, что DateTime? переменная "dateSent" имеет 24-часовую временную метку времени, например, 14:50:34
Значение A DateTime
не имеет формата. Это просто дата и время. Точно так же, как int
со значением шестнадцати - это "0x10" и "16" в зависимости от того, как вы его форматируете, то же самое верно для DateTime
. Нет формата, который меняется со значением - результаты только вызова ToString()
будут зависеть от настроек культуры.
Ответ 2
Это должно быть так же просто, как заглавные буквы h
HH:mm:ss
Вот приличная ссылка на дату создания строки
Из статьи:
DateTime dt = new DateTime(2008, 3, 9, 16, 5, 7, 123);
Обратите внимание, что час составляет 16
String.Format("{0:h hh H HH}", dt); // "4 04 16 16" hour 12/24
Ответ 3
Используйте заглавные буквы для часов:
HH:mm:ss
^^
Ответ 4
Если вы хотите отобразить 24-часовую строку, используйте следующую строку :
HH:mm:ss
Надеюсь, что это поможет