преобразовать строку даты в дату ISO с часовым поясом

1

У меня есть набор дат и времени, он отформатирован следующим образом:

01.07.2013 16:10.

Я знаю, что мне нужно перестроить, чтобы соответствовать стандарту ISO, поэтому мне удалось получить строку вроде этого:

2013-07-01T16:10.

Из этого мне нужно создать объект Date. Прочитав здесь много вопросов об этом, я немного смущен тем, как добавить к нему часовой пояс. Все время в городе Нью-Йорк Города локального времени, и я также хочу, чтобы сохранить даты.

Так как Javascript берет часовой пояс с моей машины, я изменил его, чтобы быть тем из Нью-Йорка. Однако следующая часть меня путает больше всего:

> print(new Date("2013-07-01T16:10"))
Mon Jul 01 2013 16:10:00 GMT+2000 (EDT)

Вопрос: Почему он говорит GMT + 2000, когда моим местным временем является GMT-0400 (один из Нью-Йорка)? Это правильно'? Если нет, как это делается правильно?

--Updates: Я использую mongoDB 3.4.4 а версия интерпретатора - MozJS-38. systemsetup -gettimezone возвращает America/New_York. Запуск mongo-express в хромовых шоу: Mon Jul 01 2013 06:00:00 GMT+0200 (EDT) для ISODate("2013-07-01T04:00:00.000Z") сохранен, но оболочка говорит Tue Jul 02 2013 00:00:00 GMT+2000 (EDT) для print(new Date("2013-07-01T04:00:00.000Z")); ,

Теги:
datetime
date

1 ответ

1
Лучший ответ

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

> new Date("2013-07-01T16:10-04:00")
2013-07-01T20:10:00.000Z
  • 1
    Если местный часовой пояс фактически находится в этом смещении, то нет необходимости указывать его. Дата + время по ISO без смещения должна интерпретироваться как местное время по ISO8601 и ES2015 + (все современные браузеры).
  • 0
    Я не знал об этом. Виноват.
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню