2016-04-29 6 views
4

Я использую moment-timezone v.0.5.3-2016c библиотеку для вычисления UTC смещения для часового пояса:момент Часовой пояс: UTC смещение разница

var z = moment().tz("America/Los_Angeles"); 
z.utcOffset(); // -420 mins or -7 hours 

// check if DST is shifted 
z.isDSTShifted(); // false 

Но здесь https://en.wikipedia.org/wiki/List_of_tz_database_time_zones UTC смещение для America/Los_Angeles на -8 часов.

Moment использует tzdb v.2016c и статью в википедии.

Хорошо, почему здесь есть два разных результата? И какой результат правильный?

P.S .: существует такая же разница для America/Kentucky/Monticello и Europe/Tiraspol, а также.

+1

'-7' - правильный ответ в настоящее время (29 апреля 2016 года). Вопрос в том, почему процедура Moment '.isDSTOffset()' не знает этого. Я думаю, что это имеет какое-то отношение к тому, как Moment получает значение Date; если он исходит из родного объекта Date, он, возможно, не сможет сказать. – Pointy

+1

[См. Этот отчет об ошибке.] (Https://github.com/moment/moment-timezone/issues/131) – Pointy

+1

[Также этот старый вопрос SO.] (Http://stackoverflow.com/questions/26063400/check -if-date-isdstshifted) – Pointy

ответ

2

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

Если вы хотите узнать, является ли время летнее время или нет, используйте isDST. Функция isDSTShifted предназначена для работы с недействительными локальными временами, а не для проверки DST. Вероятно, его можно было бы назвать лучше.

2

В настоящее время США находятся в DST (летнее время). Поэтому я бы использовал столбец UTC DST Offset, который показывает -07:00.

+3

Вопрос в том, почему функция Moment '.isDSTOffset()' возвращает 'false', когда часовой пояс четко * * в DST в настоящее время. – Pointy

+0

Ах ... извините. Я неправильно понял, в чем проблема. Похоже, что это ошибка. –

Смежные вопросы