Как преобразовать часовой пояс UTC в местоположение локального часового пояса

#javascript #jquery #datetime #momentjs

#javascript #jquery #дата и время #momentjs

Вопрос:

У меня есть следующий код:

 UTC<br/>
<div id="divUTC">'UTC 5:30'</div><br/>
<br/>
<div id="divLocal">
</div>
 

В моем javascript я пытаюсь преобразовать UTC 5:30 в восточно-индийское стандартное время (Ченнаи, Калькутта, Мумбаи, Нью-Дели)
Значение UTC может быть любым, так же как и преобразованное значение.

 var divUtc = $('#divUTC');
var divLocal = $('#divLocal');  

//get text from divUTC and convert to local timezone  
 

Я знаю, что я не разместил здесь никакого кода, но, к сожалению, мне это не приходит в голову, у меня есть возможность поместить пары ключ-значение, но это неэффективно. Пожалуйста, предложите.

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

1. преобразование часового пояса требует относительно больших усилий. Я бы посоветовал использовать для этого какую-нибудь библиотеку, например momentjs

2. Привет, Владимир М, я понимаю, но momentjs преобразует только время UTC в местное время, спасибо

Ответ №1:

Одна из проблем преобразования UTC XX в любой текст местного часового пояса заключается в том, что он не соответствует соотношению 1: 1. Тем не менее, если вы используете momentjs с часовыми поясами, вы могли бы получить список возможных местоположений.

1) получить все известные часовые пояса:

 var names = moment.tz.names();
// names now contain an array of tz names
 

2) выполните итерацию по массиву имен, создайте объект moment в определенном часовом поясе и получите его смещение. Следующий код выведет смещения для каждого имени tz на данный момент.

 for( var i = 0; i < names.length; i  ){
    console.log(moment.tz(names[i]).format('Z'));
}
 

3) в этом цикле вы можете сравнить utcOffset момента или текстовое представление смещения и получить набор часовых поясов, которые соответствуют вашему смещению.

Вот цикл, который будет печатать все имена tz для 05:30.

 var names = moment.tz.names();
for( var i = 0; i < names.length; i  ){
    if(moment.tz(names[i]).format('Z') === " 05:30"){
        console.log(names[i])    
    }
}

// output:
//     Asia/Calcutta
//     Asia/Colombo
//     Asia/Kolkata
 

Кроме того, имейте в виду, что многие регионы имеют изменения летнего времени, что означает, что регион может иметь различное смещение в зависимости от времени года.