Как определить добавление или вычитание 1 часа для перехода на летнее время в MomentJS

#javascript #date #momentjs #dst #timezone-offset

#javascript #Дата #momentjs #летнее время #смещение часового пояса

Вопрос:

Я использую MomentJS для обработки даты и времени в моем приложении. Все поля, относящиеся к дате и времени, сохраняются в базе данных в формате UTC. Во время отображения этих дат я использую смещение UTC (-8.00 и т.д.) В MomentJS, как показано ниже:

 moment(utcDate).utcOffset(-8.00).format()
  

Это дает мне тихоокеанское время только в случае отсутствия перехода на летнее время. Но мы говорим о сегодняшней дате, приведенное выше неверно, потому что мы должны добавить 1 hour переход на летнее время в смещение, следовательно, оно становится -07.00 .

Но моя проблема в том, как определить и добавить этот 1 час в moment.

Я пробовал moment(date).utcOffset(-8.00).isDST() , который все время выдает false, поэтому не уверен, как с этим справиться.

Комментарии:

1. Для всех ваших потребностей в часовом поясе… у moemntjs также есть библиотека для этого momentjs.com/timezone

2. Проблема в том, что на данный момент у меня есть только смещение. Так разве это невозможно, используя только это?

3. Я не понимаю — momentjs timezone предоставит вам инструменты, необходимые для решения проблемы how to detect , которую вы не можете решить — посмотрите документацию для timezone, чтобы понять, как ее использовать

4. @RobG спасибо за урок, который мне не понадобился

5. Смещения не являются часовыми поясами, вы не можете достоверно определить, соблюдает ли место переход на летнее время или нет, только по смещению. Есть много мест, которые имеют одинаковое стандартное смещение, но некоторые соблюдают переход на летнее время, а другие нет. Об этом вам скажет только административная область, в которую попадает местоположение (вот почему часовые пояса IANA используют географические местоположения, такие как Африка / Лагос).