プロが教える店舗&オフィスのセキュリティ対策術

年齢を入力すると、西暦、和暦、干支変換できるサイト・プログラム(出来ればhtmlで)
また、西暦、和暦、干支を変換できるサイト・プログラムはご存知でしょうか?

意外とこういうプログラムを自力で作ろうとすると難しいものですね。。

A 回答 (2件)

暦の処理は面倒ですが、特定の業界では必須知識なのでがんばりましょう。



とくにこだわりが無ければ、カシオが提供しているサイトの「年齢早見表」で事足ります。
http://keisan.casio.jp/

HTML だけで計算したいならば、以下サンプルです

<form name=calcAge>
<p>年齢: <input type=number name=a> <button type=submit>計算</button>
<dl>
<dt>西暦<dd><output name=gc></output>
<dt>和暦<dd><output name=jc></output>
<dt>干支<dd><output name=sc></output>
</dl>
</form>

<script>(function(){_=0;
addEventListener('submit', function(ev){
_ ; var form = ev.target;
_ ; if (form.name == 'calcAge') ev.preventDefault(), calcAge(form);
}, false);
function calcAge(form) {
_ ; var elems = form.elements;
_ ; var age = parseInt(elems['a'].value);
_ ; var date = new Date();
_ ; date.setFullYear(date.getFullYear() - age);
_ ; elems['gc'].value = get西暦の年(date);
_ ; elems['jc'].value = get和暦の年(date);
_ ; elems['sc'].value = get干支の年(date);
}
function get西暦の年(date) {
_ ; var y = date.getFullYear();
_ ; return (y > 0)? '%年'.replace(/%/, y): '紀元前%年'.replace(/%/, 1-y);
}
var 十干の定数 = '庚辛壬癸甲乙丙丁戊己'.split('');
var 十二支の定数 = '申酉戌亥子丑寅卯辰巳午未'.split('');
function get干支の年(date) {
_ ; var year = date.getFullYear();
_ ; if (year < 0) year = 60 + year % 60;
_ ; return 十干の定数[ year % 10 ] + 十二支の定数[ year % 12 ];
}
var 元号の定数 = (function(){
_ ; var res = [], x = '明治/18681023,大正/19120730,昭和/19261225,平成/19890108'.split(/,/).reverse();
_ ; for (var i = 0; i < x.length; i++) {
_ ; _ ; var o = x[i].split('/');
_ ; _ ; var n = parseInt(o[1], 10);
_ ; _ ; var y = n / 10000 | 0;
_ ; _ ; var t = new Date(y, ((n/100|0)%100)-1, n%100);
_ ; _ ; res.push({ year:y, first:t, name:o[0] });
_ ; }
_ ; return res;
})();
function get和暦の年(date) {
_ ; function E(o, y) { return '%%年'.replace(/%/, o.name).replace(/%/, (y - o.year == 0)? '元': 1 + y - o.year) }
_ ; var res = [], year = date.getFullYear();
_ ; for (var i = 0; i < 元号の定数.length; i++) {
_ ; _ ; var o = 元号の定数[i];
_ ; _ ; if (o.year <= year) res.unshift(E(o, year));
_ ; _ ; if (o.year < year) break;
_ ; }
_ ; return (res.length == 0)? '不明': res.join(' / ');
}
})()</script>

日本では明治6年より前は太陰暦なので、ちゃんと対応するならば考慮が必要です。
また以下の法律がある限り、和暦の計算方法は変更され続ける前提なので注意しましょう。
参考) 元号法 / 元号を改める政令
http://law.e-gov.go.jp/htmldata/S54/S54HO043.html
http://law.e-gov.go.jp/htmldata/S64/S64SE001.html
    • good
    • 0
この回答へのお礼

>>特定の業界では必須
そうですね。2000年問題を思い出しました。

定義が大事なところですねやはり。法律も勉強しなければ。
ありがとうございました。

お礼日時:2015/05/22 20:57

⇒暦注計算 - 高精度計算サイト(

http://keisan.casio.jp/has10/SpecExec.cgi?id=sys … )
ですが、パソコンで西暦について行なうときは、ツェラーの公式 - Wikipedia( http://ja.wikipedia.org/wiki/%E3%83%84%E3%82%A7% … )を使うのが一般的です。コンピューターの世界では、Unix、POSIX互換なオペレーティングシステムでは、1970年1月1日0時0分0秒から、Windows NT系では1601年1月1日0時0分を紀元として秒でカウントされることになっていますから、一般的なtime関数で西暦に直すことが出来ます。
 例えばPerlでしたら @time = localtime(time);で
time - Perlリファレンス( http://www2u.biglobe.ne.jp/~MAS/perl/ref/time.html )
    • good
    • 0
この回答へのお礼

ツェラーの公式 素敵ですね! どんな仕組みかと思いましたが、高校数学の内容でも充分理解できるもので導出も含めて面白かったです。リファレンスも充実していました。ありがとうございました。

お礼日時:2015/05/22 20:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!