Установка даты момента после установки utcOffset

#momentjs

#momentjs

Вопрос:

Я хочу установить дату для YYYYMMDD того, что должно ссылаться на определенную дату utcOffset . Но я не уверен, что было бы лучшим и элегантным способом установить эту дату после установки utcOffset .

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

 moment.utc(ymdDate, 'YYYYMMDD').utcOffset(timeOffset)
 

Пример:

В случае, если у меня была такая дата, 20190420 которую необходимо использовать для объекта moment, который должен ссылаться на другой часовой пояс, и я делаю следующее, дата приведет к 19 апреля.

 moment.utc(20190420, 'YYYYMMDD').utcOffset(-300).format()
 

Результат:
2019-04-19T19:00:00-05:00

Ожидаемый результат: 2019-04-20T00:00:00-05:00

Комментарии:

1. Я не мог полностью понять ваш вопрос, каков ваш ожидаемый результат? Может быть, вы можете поделиться выполняемым фрагментом с примерами значений ymdDate и timeOffset . Я не могу понять, ищете ли вы что-то вроде parseZone() / utcOffset(timeOffset, true) или у вас просто проблема с отображением.

2. @VincenzoC только что добавил точный тест, чтобы вы могли его проверить. Спасибо!

Ответ №1:

Вы можете использовать utcOffset передачу true в качестве второго параметра

utcOffset Функция имеет необязательный второй параметр, который принимает логическое значение, указывающее, следует ли сохранять существующее время суток.

  • Передача false (по умолчанию) сохранит тот же момент в универсальном времени, но местное время изменится.
  • Передача true сохранит то же местное время, но за счет выбора другой точки в Универсальном времени.

Вот живой пример:

 console.log( moment.utc(20190420, 'YYYYMMDD').utcOffset(-300, true).format() ); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>