すでにPerlに関してはdmakiがDateTime::Calendar::Japaneseを出しているのでJavaScriptで。
西暦から和暦を変換してくれるRailsプラグイン: JaDates : HotWeb Magazine最近とあるRailsプロジェクトで4月5日2008年ではなく、平成20年4月5日として表示したかったがそれを簡単に変換するヘルパーがなかったので、ヘルパーを開発しました。
待ち時間の暇つぶしで書いたので大したものではありませんが、そこそこ使えるかも。
年
月
日は
です。
明治から平成までしかサポートしていませんが、年単位ではなく日単位で対応してます。1989年1月7日とかにしてみてください。
ソースはこちら。
Date.JapaneseEra = { 'M':(new Date(1868, 0, 25)).getTime(), 'T':(new Date(1912, 6, 30)).getTime(), 'S':(new Date(1926, 11, 25)).getTime(), 'H':(new Date(1989, 0, 6)).getTime() }; Date.prototype.getJapaneseYear = function(){ var when = this.getTime(); var yyyy = this.getFullYear(); if (when < Date.JapaneseEra['M']) throw "too many years ago"; if (when < Date.JapaneseEra['T']) return "明治" + (yyyy - 1868); if (when < Date.JapaneseEra['S']) return "大正" + (yyyy - 1912); if (when < Date.JapaneseEra['H']) return "昭和" + (yyyy - 1925); return "平成" + (yyyy - 1988); }; Date.prototype.getJapaneseYear = function(){ var when = this.getTime(); var yyyy = this.getFullYear(); if (when < Date.JapaneseEra['M']) throw "too many years ago"; if (when < Date.JapaneseEra['T']) return "明治" + (yyyy - 1868); if (when < Date.JapaneseEra['S']) return "大正" + (yyyy - 1912); if (when < Date.JapaneseEra['H']) return "昭和" + (yyyy - 1925); return "平成" + (yyyy - 1988); }; Date.prototype.toJapaneseDateString = function(){ return this.getJapaneseYear() + '年' + (this.getMonth() + 1) + '月' + this.getDate() + '日'; }; function update_nengo(){ var $ = function(id){ return document.getElementById(id) }; var yyyy = parseInt($('yyyy').value); var mm = parseInt($('mm').value)-1; var dd = parseInt($('dd').value); var isleap = function(yyyy){ return yyyy % 4 != 0 ? false : yyyy % 100 != 0 ? true : yyyy % 400 != 0 ? false : true; }; var dofm = [31, (isleap(yyyy) ? 29 : 28), 31, 30, 31, 30, 31, 31 , 30, 31, 30, 31][mm]; if (dd > dofm) dd = dofm; $('dd').innerHTML = ''; for (var i = 1; i <= dofm; i++){ var option = document.createElement('option'); option.innerHTML = i; if (i == dd) option.setAttribute('selected', true); $('dd').appendChild(option); }; var when = new Date(yyyy, mm, dd); $('nengo').innerHTML = when.toJapaneseDateString(); }; update_nengo();
Enjoy!
Dan the Man with Too Many Calendars to Support
おもすれ〜
西暦1年1月7日は明治33年1月7日です。
キタコレ