現在進行中の制作で、JavaScriptによる西暦と和暦の相互変換が必要でした。
単純な判定を繰り返すだけなので、難しい知識は必要ないのですが、作るとなると結構手間です。なので、そのまま使える関数を作ってみました。
以下のコードです。
function SeirekiToWareki(str){
var gengou = "";
var year = "";
a = str.split("/");
a[0] = parseInt(a[0]);
a[1] = parseInt(a[1]);
a[2] = parseInt(a[2]);
if(a[0] > 1989 || (a[0] == 1989 && a[1] == 1 && a[2] > 6)){
a[0] = a[0] - 1988;
gengou = "平成";
}else if(a[0] > 1926 || (a[0] == 1926 && a[1] == 12 && a[2] > 24)){
a[0] = a[0] - 1925;
gengou = "昭和";
}else if(a[0] > 1912 || (a[0] == 1912 && a[1] == 7 && a[2] > 30)){
a[0] = a[0] - 1911;
gengou = "大正";
}else if(a[0] > 1868 || (a[0] == 1868 && a[1] == 1 && a[2] > 24)){
a[0] = a[0] - 1867;
gengou = "明治";
}
if(a[0] == 1){
a[0] = "元";
}
return gengou + a[0] + "年" + a[1] + "月" + a[2] + "日";
}
明治以降のみに対応しています。それ以前は『1868年1月24日』と変換されます。
引数には、年月日をスラッシュで区切った『2012/11/30』という形式を使います。月と日が一桁の場合、『2012/1/1』でも『2012/01/01』でもどちらでもいけます。
返り値は『平成24年11月30日』という形式です。各元号の1年となった場合には『元年』に変換します。
コード的には、要するに年月日を単純に判定して、文字列を整えているだけです。これを使えばWikipediaで元号を調べなくても良いので(笑)、必要な方は使ってみてください。
逆変換はまたいずれ。