, в то время как я полностью намерен поддерживать все идентификаторы часовых зон Iana в моем приложении, когда пользователи выбирают часовой пояс, я хочу, чтобы варианты содержали только канонические зоны в настоящее время. javascript?
Предпочтительно, я бы хотел достичь этого, используя API javaScript (intl/временный Intl.supportedValuesof ('Timezone') . Тем не менее, это возвращает список идентификаторов первичных часовых поясов , которые
Уникально идентифицируют часовой пояс [и] обычно относятся к географической области, закрепленной городом ...
, и как таковые, концепция, отличающиеся от кафедлирования, как описано в этом примечании. />
Обратите внимание, что атрибуция первичных идентификаторов сохраняет код страны: например, в базе данных IANA Atlantic/Reykjavik как связь для Африки/Абиджана, но поскольку они соответствуют различным странам (Iceland и Côte d'ivoire, соответственно), они рассматриваются как как разные основные идентификаторы. /> Я также знаю о пакете TZDB. Тем не менее, это возвращает слишком узкий списка. Это правила для группировки: < /p>
Если часовые пояса находятся в одной и той же стране < /li>
Если [dst и не-dst] смещения, например, что, например, например, например, что означает, что например, например, например, например, что означает, что означает, что означает, что например, например, что означает, что означает, что например, например, что означает, что например, например, например, например, например, например, например, например, например, например, например, например, что означает, что, например, например, например, например, что означает, что, например, например, например, что означает, что, например, например, что означает, что, например, например. America/Indiana/Indianapolis сгруппируется в America/new_york , несмотря на то, что он является отличным каноническим идентификатором. Canonical)?
Если бы я мог выяснить это, я мог бы отобразить результат Intl.supportedValuesof ('Timezone') и воспринимать различные значения.
Это также необходимо проверить идентификаторы часовых идентификаторов для семантического равенства - Америка/Индианаполис. America/Indiana/Indianapolis , но, поскольку равенство строки, очевидно, потерпит неудачу, мне нужен способ разрешения ссылок.
Код: Выделить всё
function getCanonicalTimezone(ianaId) {
try {
const formatter = new Intl.DateTimeFormat('en', {
timeZone: ianaId
});
return formatter.resolvedOptions().timeZone;
} catch (error) {
throw new Error(`Invalid timezone: ${ianaId}`);
}
}
< /code>
Однако это не разрешает ссылки в каждом случае. Например, Africa/Accra бонусный вопрос
Почему временная изобретает эту новую концепцию идентификаторов первичного часового часа ? Страна, отличная от идентификатора, к которому он разрешается (как в примере, который я цитировал), но тогда, если бы они были предназначены для обращения по -разному, почему Яна создала отношения ссылки? Временный очень тонко расходятся от Яны в их терминологии (и, следовательно, поведения), и настраивает все, кроме тех, кто тщательно читал документацию, которая будет запутана (и я могу сказать вам из своего опыта в течение последних нескольких недель, что LLMS не достигает ускорения из -за различия). Создание нового стандарта также имеет последствия для x -framework - например, В моем случае наш API не является JavaScript, поэтому его списки не будут соответствовать передней части, если передняя часть не будет следить за стандартами IANA.
Подробнее здесь: https://stackoverflow.com/questions/796 ... javascript
Мобильная версия