Ошибка формата даты и времени при создании объекта даты и времени - PullRequest
0 голосов
/ 02 декабря 2018
DateTime Temp= new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, site.start.Hour, site.start.Minute, 0);

site.start.Hour - 23

Мой вопрос: мой начальный час - 23, но Temp DateTime Объект показывает час в 12-часовом формате, который составляет 11 часов вечера.Почему и как получить значение Temp в формате, в котором я передаю значение site.start.Hour, то есть 24-часовой формат?

1 Ответ

0 голосов
/ 02 декабря 2018

Как уже прокомментировали другие, DateTime не хранит никакой отображаемой информации.

При наведении курсора на вашу переменную в отладчике вызывается ToString(), и отображается значение для вашей текущей среды.Скорее всего, вы находитесь в среде с 12-часовым форматом.

Чтобы получить фактический час, вы должны использовать свойство Hour:

DateTime Temp = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, site.start.Hour, site.start.Minute, 0);

//should be 23
var tempHour = Temp.Hour;

У вас есть различные строки формата , который ToString может использовать.Если дополнительный параметр IFormatProvider (например, CultureInfo) не задан, строка отображается в текущей культуре потоков.


Поэтому, когда вы хотите отобразить егов определенной культуре используйте строку культуры и форматирования, которые вы хотите:

var cultureInfo = new CultureInfo("de-DE") // germany has 24 hour clock for example
var str = Temp.ToString("g", cultureInfo);

В общем, меняйте культуру только в том случае, если вы хотите отображать дату в определенной культуре.В большинстве случаев мы не хотим ограничивать его, поэтому он всегда соответствует формату, ожидаемому вашим пользователем.

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