Мне нужно написать функцию, в которой входами являются 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 .