На момент написания этой статьи мое текущее время 2017-01-10T19: 23: 00.000Z но new Date() дает мне 2017-01-11T00:23:19.521Z на 5 часов больше моего текущего часового пояса. Это влияет на то, как мои данные хранятся в моем MongoDB. Я знаю, что могу установить время 5 часов назад, используя

var datetime    = new Date();
 datetime.setHours(datetime.getHours()-5); 

Но я предпочту лучший способ сделать это. Я пытался использовать это. Я все еще получил то же время. В других частях моего кода я Tue Jan 10 2017 19:54:30 GMT-0500 (EST) отличается от начального времени. Я буду счастлив, если кто-то может указать, что здесь не так.

9
Ekom 11 Янв 2017 в 03:56

3 ответа

Лучший ответ

Использование moment.js - самый простой способ выполнить то, что вы просите.

moment().format() // "2017-01-11T13:56:15-05:00"

Выходные данные представляют собой строку в формате ISO-8601, в которой действует местный часовой пояс.

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

Также обратите внимание, что каждый раз, когда вы пытаетесь настроить объект Date по смещению часового пояса, вы просто выбираете другой момент времени. Вы на самом деле не меняете поведение часового пояса, используемого объектом Date.

4
Matt Johnson-Pint 11 Янв 2017 в 18:56

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

new Date().toString();
0
KrutPandya 14 Ноя 2019 в 09:05

Если у вас есть доступ к вашему php.ini, вы можете установить date.timezone в правильный часовой пояс, полный список допустимых часовых поясов можно найти по адресу php.net/manual/timezones.php

-11
Israel Pinheiro 11 Янв 2017 в 01:08