Как в ближайшее время в ближайшее время Император Акихито Японское правительство, правительство Японии объявило 1 апреля, что царствование следующего императора будет известен как эпоха Reiwa (令 和).
Вы можете задумываться, что «подожди, Япония не приняла Григорианскую календарную систему!?» – Ну да, Да, Япония проделал более 100 лет назад, однако, Япония использует как «западный» календарь, так и уникальный японский имперский год, который основан на легендарном основании Японии императором Джимю в 660 до н.э.
Во всяком случае, что я хочу поговорить в моем блоге, не о японской истории, а JavaScript Отрицательный DateTimeFormat
Объект, который включает в себя языковую и локальную конкретную дату и время форматирования.
API интернационализации Ecmascript Первоначально был представлен в 2010 году и в настоящее время в 6-м издании, чтобы помочь локализовать выпуск дат, чисел и валют в JavaScript. И это было хорошо поддерживается крупными браузерами. (См. Могу ли я использовать Несомненно
Одно из свойств Intl
Объект это DateTimeFormat
, который включает язык и локаль конкретную дату и время форматирования.
Так да, с Отрицательный DateTimeFormat
Объект, вы можете автоматически распечатать локальную дату Японии и время с японской имперской эпохи!
Используя datetimeformat.
Не указав локаль/язык, DateTimeFormat
Использует локаль по умолчанию и часовой пояс по умолчанию, поэтому, когда я нахожусь на моей машине в США:
new Intl.DateTimeFormat().format(Date.now())
Возвращает сегодняшнюю дату в США как:
"4/2/2019"
Указание локалей
Вы можете получить локализованную дату и время, используя идентификатор локали (код языка и код страны/региона), как локалий
Аргумент, например:
new Intl.DateTimeFormat('ru-RU').format(Date.now()) // "02.04.2019"
И Япония:
new Intl.DateTimeFormat('ja-JP').format(Date.now()) // "2019/4/2"
Хорошо, но вы все еще видите Грегорианский календарный год здесь. Так как вы можете сделать его полностью локализованным с имперским годом?
Ну, идентификатор локали, JA-JP
, недостаточно, и вам нужно добавить расширение -u-ca-японский
. Я точно не знаю, что это значит Но все, что я могу сказать, это JA-JP-U-CA-японские
неловко сложный локальный код.
Отредактировано: спасибо, Жан-Кристофа Серлария Ибо дать мне знать, что -у
В идентификаторе указывает расширение, -Ка
говорит определяет тип календаря в этом случае, -Япанские
календарь. Для получения дополнительной информации о данных локали см.: Технический стандарт Unicode # 35.
new Intl.DateTimeFormat('ja-JP-u-ca-japanese').format(Date.now()) // "31/4/2"
Теперь мы знаем, что это год 31. Но в каком году это? Как мы можем знать Имперское имя!?
Чтобы получить все сделку, используйте опции
аргумент, в этом случае использовать эра
:
new Intl.DateTimeFormat('ja-JP-u-ca-japanese', {era:'long'}).format(Date.now()) // ta-da! "平成31年4月2日"
Оооо, да, теперь вы получаете “平成 31 年 4 月 2 日”!
Давайте попробуем еще одну вещь с тайским языком:
new Intl.DateTimeFormat('th-TH-u-nu-thai', {era:'long'}).format(Date.now()) // "๒ ๔ พุทธศักราช ๒๕๖๒"
Уоо, я понятия не имею, как прочитать это, но это 2562 года в буддийском календаре!
Ну, вы можете найти подробную информацию о вариантах и узнать больше об этой теме на MDN веб-документы
Кроме того, я быстро записал это глупое маленькое веб-приложение под названием Это еще Rewa (令 和)? на https://reiwa-yet.glitch.me/ Отказ
Это должно сказать Нет До 1 мая 2019 года, когда Crown Prince Naruhito становится новым императором, имперский год должен быть изменен на 令 和 元年, Если в вашем браузере реализована новая эра !!! Итак, давайте обновим ваш браузер и посмотрите!
Оригинал: “https://dev.to/girlie_mac/reiwa-javascript-international-date-format-and-japan-s-new-imperial-era-2plj”