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
возвращает мою текущую часовую зону, хотя это событие выглядит как моя другая часовая зона внутри объекта момента.
Почему это работает так, и какая рабочая реализация для того, что мне нужно?
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).
Данные правильно хранятся в моей БД.
Может кто-нибудь объяснить, почему?
Спасибо.