Есть ли способ заставить DateTime.IsDaylightSavingTime работать на машине с временем GMT / UTC? - PullRequest
3 голосов
/ 10 января 2012

Я пытаюсь узнать, есть ли способ заставить объект DateTime получить все нужные свойства в ОС, для которой установлено время по Гринвичу.Не просто изменение времени.

Сейчас я делаю следующее:

DateTime f = new DateTime(2012, 8, 1); //A date on summer

DateTime f2 = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(f, TimeZoneInfo.Local.Id, "Central Europe Standard Time");

var isSummer = f2.IsDaylightSavingTime(); //It always returns false if the OS is on GMT

И это меняет час и дату, чтобы время по Гринвичу стало стандартным временем Центральной Европы, но IsDaylightSavingTime функция не будет работать.Он всегда возвращает false, потому что я использую GMT в системе, но я думаю, что не должен, потому что я создал DateTime для центральной Европы.

Есть ли способ сделать объект DateTime f2 действительно локально и дает понять, что если его август и Европейский центральный, он должен возвращать true вместо false?

Я знаю, если я использую локальное время на машине, это будет работать нормально, но я не могу изменитьВремя по Гринвичу на сервере.Я бы с удовольствием, но я не могу.: -)

1 Ответ

10 голосов
/ 10 января 2012

DateTime.IsDayLightSavingTime возвращает true, если Kind имеет значение Local или Unspecified, а значение этого экземпляра DateTime находится в диапазоне летнего времени для текущего часового пояса

Т.е. объект DateTime проверяет системный часовой пояс,поскольку UTC не поддерживает переход на летнее время, он возвращает значение true.

Если вы хотите проверить, соответствует ли указанное время падению летнего времени для часового пояса, используйте метод IsDayLightSavingTime в TimeZoneInfo

DateTime f = new DateTime(2012, 8, 1); //A date on summer 
TimeZoneInfo tzf2=TimeZoneInfo.FindSystemTimeZoneById("Central Europe Standard Time");
DateTime f2 = TimeZoneInfo.ConvertTime(f, tzf2);
var isSummer = tzf2.IsDaylightSavingTime(f2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...