IT系おじさんのチラシの裏
2018年10月~
当サイトの記事にはアフィリエイト広告のリンクが含まれる場合があります

JavaScriptで西暦を和暦に変換する

先日、「Windows Updateで元号に関する不具合が発生する可能性」で西暦和暦の変換について書いた際、JavaScriptにもtoLocaleDateStringという和暦変換の関数があることを知ったので、備忘録としてメモメモ。

ちなみに、その記事で書いたとおり、Windows Updateによる不具合の影響は.NET Framework 4以降のみなので、JavaScriptには特に影響ありません。

JavaScriptで西暦和暦変換

サンプルコード

<script>
var dt = new Date();
document.write(dt.toLocaleDateString('ja-JP-u-ca-japanese', {era:'long'}));
</script>

動作結果

解説

現在の日付で新しいDateオブジェクトを作成し、そのDateオブジェクトのtoLocaleDateStringで和暦変換をしています。

toLocaleDateStringに指定できるオプションは主に書式に関するもので、eraにlongと指定すると「平成」、narrowを指定すると「H」といった変換が行われます。一応、shortというのもあるのですが、「平」とはならず「平成」と変換されるのは謎。

入力された任意の日付を和暦変換するサンプル

先述の例だけだとちょっと寂しいため、もう少し機能追加して、任意の日付を変換する例

サンプルコード

西暦:<input type="date" id="ymd">
<select id="era">
<option>long</option>
<option>short</option>
<option>narrow</option>
</select>
<button onclick="toWareki();">変換</button>
<input type="text" id="wareki" readonly>

<script>
function toWareki()
{
	//入力された日付からDateオブジェクトを作成
	var arr = document.getElementById('ymd').value.split('-');
	var dt = new Date(arr[0], arr[1] - 1, arr[2]);
	//元号の書式に関するオプションを設定
	var opt = {era:document.getElementById('era').value};
	//toLocaleDateStringで西暦→和暦変換
	document.getElementById('wareki').value = dt.toLocaleDateString('ja-JP-u-ca-japanese', opt);
}
function getToday()
{
	var dt = new Date();
	var y = dt.getFullYear();
	var m = ('0' + (dt.getMonth()+1)).slice(-2);
	var d = ('0' + dt.getDate()).slice(-2);
	return y + '-' + m + '-' + d;
}
document.getElementById('ymd').value = getToday();
</script>

動作結果

西暦:

※西暦の部分はtype="date"にしているためChromeやEdgeなどのモダンブラウザならカレンダーの表示もされるはずです。

まとめ

JavaScriptで西暦→和暦変換するにはDateオブジェクトのtoLocaleDateString関数を使うとカンタン!

新元号:令和について

2019年5月10日追記:まだどのブラウザもtoLocaleDateString関数による令和表記には対応していないようですが、Chromeの開発者バージョンでは既に対応されているようですので、時間の問題かと。

関連記事

JavaScriptのcanvasで縦書きを行う際の備忘録

canvas上に縦書きの文章を出力して画像化しようと考えてちょっとハマったので忘れないうちにメモしておきます。 結論から先に書くと、基本的にcanvasにはwriting-modeの設定が効くの

JavaScriptのWebAudioAPIで楽曲の口パクをしてみる

以前、ソフトウェアの解説動画を作った際、おっさんの声だけ流れてるのもアレだし、最近流行りのアバターにしゃべらせるやつやってみよう、と思ったことがあります。 vtuberとかおじさんよくわからない

JavaScriptでパスワードを自動生成するサンプル

パスワード関連の記事が続きましたので、ついでにJavaScriptでパスワードを生成する方法について記事にしたいと思います。 パスワードに限らず、ユーザー識別のために一時的なIDを生成したりする

コメント

新しいコメントを投稿する

[新規投稿]
 
TOP