前回の記事の続きで、以下のように日付の年月
だけをローカライズさせる方法を調べている
2020年 1月
January 2020
前回の記事で、moment.jsでは表現が簡単にはできないことがわかり困っていたところ、
twitterで@kawasimaさんよりDate#toLocaleDateString
を紹介いただいた
ライブラリ使わず、Date#toLocaleDateStringでいけるんじゃない?
— :craftsman/kawasima (@kawasima) January 23, 2020
new Date().toLocaleDateString('ja-JP', {year: 'numeric', month: 'long'})
ということで、Date#toLocaleDateString
を試してみる
使い方は下のように第一引数にlocale
、第二引数にoptions
を指定して使う
new Date().toLocaleDateString('ja-JP', { year: 'numeric', month: 'long' })
ただし、古いブラウザーはこの2つの引数に対応していないようなので、ブラウザの対応状況に注意
options
には以下のプロパティが使用できる
(Intl.DateTimeFormat - JavaScript | MDNより抜粋)
- weekday: 曜日の表現です。利用可能な値は以下の通りです。
- "long" (例 Thursday)
- "short" (例 Thu)
- "narrow" (例 T)。ロケールによっては、 narrow 形式が同じ曜日が2つある場合もあります (例 Tuesday の narrow 形式も T です)。
- 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)
- hour: 時の表現です。利用可能な値は "numeric", "2-digit" です。
- minute: 分の表現です。利用可能な値は "numeric", "2-digit" です。
- second: 秒の表現です。利用可能な値は "numeric", "2-digit" です。
- timeZoneName: タイムゾーン名の表現です。利用可能な値は以下の通りです。
今回表現したいのは年月
のみの8言語
const event = new Date(Date.UTC(2020, 0, 20)); const options = { year: 'numeric', month: 'long' }; console.log(event.toLocaleDateString('en-US', options)); console.log(event.toLocaleDateString('ja-JP', options)); console.log(event.toLocaleDateString('ko-KR', options)); console.log(event.toLocaleDateString('zh-TW', options)); console.log(event.toLocaleDateString('ms-MY', options)); console.log(event.toLocaleDateString('in-ID', options)); console.log(event.toLocaleDateString('vi-VN', options)); console.log(event.toLocaleDateString('th-TH', options)); > "January 2020" > "2020年1月" > "2020년 1월" > "2020年1月" > "Januari 2020" > "Januari 2020" > "tháng 1 năm 2020" > "มกราคม 2563"
バッチリなんだけど、タイ語だけおかしい?
มกราคม 2563
調べたらこれは仏暦
でタイの公用暦らしい
西暦+543年が仏暦なんだとか
脱線したけど、これで問題なさそう