Как конвертировать дату JavaScript в UTC? - PullRequest
499 голосов
/ 04 июня 2009

Предположим, что пользователь вашего сайта вводит диапазон дат.

2009-1-1 to 2009-1-3

Вам необходимо отправить эту дату на сервер для некоторой обработки, но сервер ожидает, что все даты и время будут в UTC.

Теперь предположим, что пользователь находится на Аляске, Гавайях или Фиджи. Поскольку они находятся в часовом поясе, весьма отличном от UTC, диапазон дат необходимо преобразовать в нечто вроде этого:

2009-1-1T8:00:00 to 2009-1-4T7:59:59

Используя объект JavaScript Date, как бы вы преобразовали первый «локализованный» диапазон дат в то, что сервер поймет?

Ответы [ 24 ]

0 голосов
/ 03 апреля 2019

Используя пакет момента, вы можете легко преобразовать строку даты UTC в новый объект Date:

const moment = require('moment');
let b = new Date(moment.utc('2014-02-20 00:00:00.000000'));
let utc = b.toUTCString();
b.getTime();

Это особенно помогает, когда ваш сервер не поддерживает часовой пояс, и вы хотите всегда сохранять дату UTC на сервере и возвращать ее как новый объект Date. Выше код работал для моего требования аналогичной проблемы, что этот поток для. Поделиться здесь, чтобы помочь другим. Я не вижу точно вышеуказанного решения ни в одном ответе. Спасибо.

0 голосов
/ 07 сентября 2018

Если вам нужен объект Date

Передача только строки даты Дата предполагает время, равное 00:00, смещение на часовой пояс:

new Date('2019-03-11')
Sun Mar 10 2019 18:00:00 GMT-0600 (Central Standard Time)

Если вы добавите текущие часы и минуты, вы получите правильную дату:

new Date('2019-03-11 ' + new Date().getHours() + ':' + new Date().getMinutes())
Mon Mar 11 2019 04:36:00 GMT-0600 (Central Standard Time)
0 голосов
/ 26 сентября 2012

Еще проще

myvar.setTime(myvar.getTime() + myvar.getTimezoneOffset() * 60000);
0 голосов
/ 16 августа 2016

Я знаю, что этот вопрос старый, но рассматривал эту же проблему, и одним из вариантов будет отправка date.valueOf () на сервер. функция valueOf () javascript Date отправляет количество миллисекунд с полуночи 1 января 1970 года по Гринвичу.

valueOf ()

...