Как преобразовать любой часовой пояс с 8 утра во время utc

#javascript #time #momentjs

#javascript #время #momentjs

Вопрос:

Как я могу преобразовать любой часовой пояс 8 утра в время UTC с помощью moment или javascript

 moment("8:00:00","h:mm:ss").tz('time_zone).utc().toString()
  

Я привязал это, но теперь работаю. Есть решение?

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

1. В коде, которым вы поделились, отсутствует ' после time_zone . Нет необходимости вызывать tz(time_zone) функцию, ваш код выглядит нормально, почему вы говорите, что это не работает?. Если вы хотите, вы можете использовать format() вместо toString() .

Ответ №1:

Если вы имели в виду местный часовой пояс пользователя, вам следует использовать это:

 moment("8:00:00","H:mm:ss").utc().format()
  
  • H для 24-часовых часов, h для 12-часовых часов. Хотя это не обязательно имеет значение для 8 утра, должен быть какой-то способ узнать, что вы не имели в виду 8 вечера. (Предполагается, что будет 8 вечера 20:00:00 ).

  • Вам не нужна tz функция moment-timezone. На самом деле вам вообще не нужен moment-timezone, если только ваши исходные данные не находятся в каком-либо произвольном часовом поясе, а не в локальном часовом поясе пользователя.

  • Используйте format вместо toString . Если вы хотите получить выходные данные в определенном формате, обратитесь к документации для получения аргументов, которые вы можете передать этой функции.

Если вы на самом деле имели в виду произвольный часовой пояс с идентификатором часового пояса IANA, таким как America/New_York , то вместо этого это должно быть так:

 moment.tz("8:00:00","H:mm:ss","America/New_York").utc().format()
  
  • В этом случае вам действительно нужен moment-timezone.

Наконец, если это новый проект, ориентированный на современные среды, команда Moment рекомендует вам рассмотреть возможность использования вместо него Luxon. Luxon использует поддержку часовых поясов из самой среды и, следовательно, также намного меньше по размеру.

 luxon.DateTime.fromFormat('8:00:00', 'H:mm:ss', { zone: 'America/New_York'})
              .toUTC().toString()
  

Ответ №2:

Инициализируйте переменную текущим значением даты, которое у вас есть для других регионов (должно быть в формате даты), и используйте .toUTCString() метод.

Пример кода для перевода IST в UTC приведен ниже:

 var curdate = new Date("Fri Mar 29 2019 08:00:00 GMT 0530");

var UTCdate = curdate.toUTCString();
  

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

1. У меня нет даты, у меня есть только часовой пояс, похожий на Америку / New_York

2. Не могли бы вы, пожалуйста, предоставить примерную дату?

3. У меня нет никакой даты, только 8 утра и часовые пояса

4. Попробуйте использовать Joda Time, это может помочь! js-joda.github.io/js-joda/manual/ZonedDateTime.html