У меня есть особый случай использования, когда приложение всегда должно использовать время в часовом поясе America/Chicago
. Поэтому я установил часовой пояс Moment по умолчанию на moment.tz.setDefault("America/Chicago");
.
С этой настройкой я отправляю все входные данные даты и времени с клиента на сервер в часовом поясе America/Chicago
в формате js MM/DD/YYYY h:mm A
. И всякий раз, когда клиент запрашивает поле времени, сервер возвращает время в часовом поясе America/Chicago
и в том же формате.
Теперь есть случай, когда мне нужно проанализировать это значение даты и времени, возвращаемое сервером, и сравнить его с текущим America/Chicago
временем. Я пробовал это,
moment.tz.setDefault("America/Chicago");
let now = moment();
// serverResponse is America/Chicago datetime string in format MM/DD/YYYY h:mm A
let serverResponseMoment = moment(serverResponse);
// The above statement is where I am facing issue. Since the users could be from
// anywhere, moment(serverResponse) will be assuming the serverResponse string to
// be of the local timezone as there is no offset part attached to the string.
return now.isBefore(serverResponseMoment);
Также пробовал
let serverResponseMoment = moment.tz(serverResponse,"America/Chicago");
// The above statement assumes the serverResponse to be in UTC and give me an "America/Chicago"
// date-time after conversion
Я также пробовал moment.utc(serverResponse)
. Весь синтаксический анализ терпит неудачу, когда выполняется последняя проверка условия.
Я хочу, чтобы экземпляр момента в уже установленном часовом поясе по умолчанию содержал мой serverResponse
в качестве базового DateTime.
Или какое-то утверждение, которое делает это
Hey Moment, serverResponse is already in "America/Chicago" timezone, you don't have to make any sort of timezone assumptions. Just parse it and return an instance of yourself
Любые идеи?
Спасибо
moment.js
? Вы используетеmoment-timezone.js
? - person fen1x   schedule 07.10.2019