Найти смещение заданного часового пояса и отрегулировать время вывода UTC |JavaScript - PullRequest
0 голосов
/ 18 октября 2019

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

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

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

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

1012 * Аналогично, для Европы / Лондона. Европа / Лондон - 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 < 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 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...