Кажется, есть несколько возможных точек отказа. Ниже я перечислю те, о которых думаю, и вы сможете оценить, имеют ли они отношение к вашей настройке.
1) Код, управляющий датой, выполняется на сервере, а не локально
Большая часть нашего кода Javascript написана для выполнения в браузере пользователя, так что это предположение по умолчанию. Если в этом случае это предположение неверно и код выполняется на сервере, то «локальный» означает «на сервере». Ваш сервер должен работать с временем UTC, что может дать результаты, которые вы видите.
2) Пользователь запускает браузер с UTC
Если браузер, который вы используете для тестирования, будет считать UTC местным временем, он даст результаты, которые вы видите. Поскольку вы, вероятно, используете одну и ту же машину для локального хоста и для тестирования, это маловероятный источник проблемы ... но, тем не менее, стоит отметить.
3) Изменение способа отображения даты не меняет способа хранения даты
Многие инструменты, которыми мы располагаем для установки / изменения часового пояса, влияют на отображение даты. Тем не менее, объекты Date в Javascript хранятся с использованием Unix Time (в миллисекундах), то есть UTC. Когда вы создаете объект Date - даже с указанным часовым поясом - закулисное представление все равно будет целым числом (представляющим количество миллисекунд) и основанным на UTC. Если при проверке вы проверяете сохраненное значение, а не отображаемое значение, есть большая вероятность, что вы всегда увидите UTC. Однако , работа, которую вы выполняете с библиотекой момента, должна иметь правильное форматирование даты. Если вы проверяете объект момента, вы должны видеть часовой пояс, который ожидаете увидеть.
Если ни одна из этих трех возможных точек сбоя не применима к вашему контексту, то, возможно, они зажгут для вас идею. (Третий, особенно, чувствует, что он может быть на правильном пути, даже если это не то, что происходит в вашем случае.)