calendar — Найти смещение заданной временной зоны и скорректировать время выгрузки UTC | JavaScript

Найти смещение заданного часового пояса и отрегулировать время вывода UTC | JavaScript

Мне нужно написать функцию, где входные данные являются TimeZone и время в UTC.

Часовой пояс может быть любым, например, GMT 8, Европа / Лондон, Азия / Шанхай и т . Д. Время UTC будет в формате даты, скажем, 2019-10-12 12:00:00

Когда задана дата ввода, мне нужно будет найти разницу во времени между UTC и заданным часовым поясом, и разница должна быть добавлена ​​к времени ввода UTC.

Например, вводом является дата UTC 2019-10-12 12:00:00 PM, а TimeZone — Азия / Шанхай. Азия / Шанхай UTC 8 часов, поэтому выходной должен быть 2019-10-12 20:00:00

Точно так же для Европы / Лондона. Европа / Лондон — UTC 1, поэтому выходной должен быть 2019-10-12 01:00:00 PM.

Как добиться этого в JavaScript без использования каких-либо внешних библиотек.

 var inputDateValue = new Date('2019-10-18T06:49:00.000Z'); var timeZones = ["America/Los_Angeles", "US/Pacific", "Europe/Paris","Asia/Tokyo"]; for (index = 0; index {amp}lt; timeZones.length; index  ) { var inputTimeZone = java.util.TimeZone.getTimeZone(timeZones[index]); var calendar = java.util.Calendar.getInstance(java.util.TimeZone.getTimeZone("GMT")); calendar.setTimeInMillis(inputDateValue.getTime()); calendar.add(java.util.Calendar.MILLISECOND, (-1) * inputTimeZone.getOffset(inputDateValue.getTime())); print("result for timeZone: "  timeZones[index] " : "   calendar.getTime()); } 

Выход

 result for timeZone: **America/Los_Angeles : Fri Oct 18 13:49:00 GMT 2019** result for timeZone: **US/Pacific : Fri Oct 18 13:49:00 GMT 2019** result for timeZone: **Europe/Paris : Fri Oct 18 04:49:00 GMT 2019** result for timeZone: **Asia/Tokyo : Thu Oct 17 21:49:00 GMT 2019** 

Код работает только для первых двух часовых поясов. Другими словами, код работает только для стран, которые отстают от UTC.
Ожидаемые значения для Азии / Токиочетверг 18 октября 15:49:00 по Гринвичу 2019 года, а для Европы / Парижапятница 18 октября 08:49:00 по Гринвичу 2019 года .

Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector