JavascriptでIntl.DateTimeFormatを利用して和暦を取得する

スポンサーリンク
Intl.DateTimeFormatJavascript
Javascriptで日付の処理をする際、moment.jsというライブラリを利用しています。ライブラリを追加できない制約の中、元号を含めた日付の取得する必要があり、その方法を調べたので、紹介します。
const today = new Intl.DateTimeFormat('ja-JP-u-ca-japanese', { era:'long', year: 'numeric', month: 'long', day: 'numeric' }).format(Date.now())
console.log(today)
// 令和2年9月13日 が表示される

Intl.DateTimeFormat

Intl.DateTimeFormatは、言語に応じた日付と時刻の書式化を可能にするオブジェクトのためのコンストラクターです。

前提

  • Chrome バージョン: 85.0.4183.83(Official Build) (64 ビット)
  • Safari バージョン13.1.2 (15609.3.5.1.3)

構文

new Intl.DateTimeFormat([locales[, options]])

引数

引数はlocalesとoptionsです。
locales
localesで、和暦や仏暦などのカレンダーを指定します。
カレンダーの用途で使用できる値は、次のとおりです。

“buddhist”, “chinese”, “coptic”, “ethiopia”, “ethiopic”, “gregory”, “hebrew”, “indian”, “islamic”, “iso8601”, “japanese”, “persian”, “roc”
  • “ja-JP-u-ca-japanese”: 日時書式で和暦を使用します。すなわち、2013年は平成25年として表現されます。
  • “en-GB-u-ca-islamic”: イギリス英語でイスラム暦 (Hijri) を使用します。グレゴリオ暦で2017年10月14日は、 Hijri 暦で 24 Muharram, 1439 です。
options
optionsで出力する値の桁数などを指定します。
今回は次の4つを指定しました。
era
時代の表現です。利用可能な値は以下の通りです。
  • “long” (例 Anno Domini, 紀元)
  • “short” (例 AD)
  • “narrow” (例 A)
year
年の表現です。利用可能な値は以下の通りです。
  • “numeric” (例 2012)
  • “2-digit” (例 12)
month
月の表現です。利用可能な値は以下の通りです。
  • “numeric” (例 2)
  • “2-digit” (例 02)
  • “long” (例 March)
  • “short” (例 Mar)
  • “narrow” (例 M)。ロケールによっては、 narrow 形式が同じ月が2つある場合もあります (例 May の narrow 形式も M です)。
day
日の表現です。利用可能な値は以下の通りです。
  • “numeric” (例 1)
  • “2-digit” (例 01)
const today = new Intl.DateTimeFormat('ja-JP-u-ca-japanese', { era:'long', year: 'numeric', month: 'long', day: 'numeric' }).format(Date.now())
console.log(today)
// 令和2年9月13日 が表示される

参考

Reiwa – JavaScript International Date Format and Japan’s New Imperial Era – GirlieMac! Blog
タイトルとURLをコピーしました