Конвертировать один часовой пояс в другой в javascript - PullRequest
0 голосов
/ 13 марта 2020

Я ищу функцию, которая получает время, часовой пояс источника и пункт назначения и возвращает время в часовом поясе пункта назначения.

Часовые пояса имеют следующий формат: 'ut c', 'est' , 'edt', 'gmt', ...

function convertTime(time,fromZone,toZone){
   // do conversion
   return convertedTime;
}

Ответы [ 2 ]

2 голосов
/ 13 марта 2020

Извините, но невозможно выполнить преобразование между часовыми поясами так, как вы описали, по нескольким причинам:

  • Многие сокращения часовых поясов неоднозначны. Например, CST может быть центральным стандартным временем, стандартным временем Кубы или стандартным временем Китая. IST может быть стандартным временем Индии, стандартным временем Израиля или Iri sh летним временем. Есть много других примеров.

  • Не все согласны с тем, какими должны быть сокращения для часовых поясов. Например, на Гавайях обычно используются как HST, так и HAST.

  • Не все сокращения часовых поясов указаны на английском языке sh. Например, HNE и HAE - это французские сокращения часовых поясов, используемые для восточного часового пояса в Канаде.

  • Не все часовые пояса имеют сокращений в как мы думаем о них. Например, в Казахстане есть два часовых пояса. В западной части страны они на 5 часов опережают UT C. В восточной части страны они на 6 часов опережают UT C. В прошлом носители английского языка sh назначали выдуманные сокращения, такие как AQTT или ORAT на западе и ALMT на восток, после названий некоторых крупных городов, но ни один из них на самом деле не является использовались там и никогда не были.

  • Предполагая, что EST и EDT - это восточное стандартное время и восточное дневное время, наблюдаемые в США и Канаде, вам придется заранее определить, следует ли передайте EST или EDT вашей функции в зависимости от того, какая функция действовала в данный момент. Например, если вы передали время сегодня, 2013-03-13 и использовали EST, вы бы ошиблись, поскольку EDT действует в данный момент. Это относится как к fromZone, так и к toZone, и каждый из них должен быть определен независимо.

  • Скажем, вы пытались написать logi c для решения предыдущего пункта. У вас по-прежнему будут проблемы, когда два разных сокращения часовых поясов применяются к разным частям одного и того же часового пояса одновременно. Например, прямо сейчас MDT относится к большей части часового пояса США в горах - за исключением большей части (но не всей) Аризоны, где применяется MST.

Все вышеперечисленные факторы и другие рассматриваются с использованием базы данных IANA tz идентификаторов, таких как America/New_York, вместо сокращений.

Я также предлагаю ознакомиться со следующими ресурсами:

1 голос
/ 13 марта 2020

Вот хорошее прошлое сообщение StackOverflow об этой общей теме:

Как инициализировать JavaScript Дата для определенного часового пояса

...