Изменить момент часового пояса, не отражая .toDate () - PullRequest
0 голосов
/ 20 декабря 2018

Ngx Bootstrap Datepicker возвращает объект JS Date.
У меня есть пользовательский указатель времени, который возвращает строку, отформатированную как HH:mm.

. Что мне нужно сделать сейчас, это создать объект даты JS с выбранной датой, выбранным временем и определенной временной зоной,
Я пытаюсь использовать момент (потому что мы используем его для дат во всем приложении), но я не ожидаю поведения.

Я пытаюсь:

const specificMoment = moment.tz(date, timeZone); // date is the Ngx Bootstrap selected date
specificMoment.set('hour', +time.split(':')[0]); // time is HH:mm string
specificMoment.set('minute', +time.split(':')[1]);
return specificMoment.toDate

*timeZone изменяется в зависимости от пользователя, не из-за его браузера, это атрибут пользователя, поэтому я не могу установить moment.tz.setDefault(...);.

То, с чем я сталкиваюсь, это.toDate возвращает мою текущую часовую зону, хотя это событие выглядит как моя другая часовая зона внутри объекта момента.enter image description here

Почему это работает так, и какая рабочая реализация для того, что мне нужно?

Ps: console.log(specificMoment.format()); также возвращает неверную timeZone 2018-12-20T23:00:30-02:00.

РЕДАКТИРОВАТЬ
Получается с помощью
const specificMoment = moment(date).tz(timeZone);
, а затем
return specificMoment.toDate()
«работает».Он возвращает объект Date с 2018-12-21T05:00:00.323-0200, который является датой с указанным часовым поясом (GMT -8: 00), но отображается в моем текущем часовом поясе (GMT -2: 00).
Данные правильно хранятся в моей БД.
Может кто-нибудь объяснить, почему?

Спасибо.

1 Ответ

0 голосов
/ 20 декабря 2018

Похоже, вы не настроили момент-часовой пояс с какими-либо данными о часовом поясе для использования.Перейдите по этой ссылке на Загрузка данных в моментах.

Я создал JS Bin для вашего примера, который показывает, как использовать загрузку данных.Проверьте это здесь .например,

moment.tz.add([
    'America/Los_Angeles|PST PDT|80 70|0101|1Lzm0 1zb0 Op0',
    'America/New_York|EST EDT|50 40|0101|1Lz50 1zb0 Op0'
]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...