DateTime.Value.ToString(формат) дает мне 12-часовые часы - программирование
Подтвердить что ты не робот

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-часовую версию часов?
4b9b3361

Ответ 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

Надеюсь, что это поможет