
No.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
>>特定の業界では必須
そうですね。2000年問題を思い出しました。
定義が大事なところですねやはり。法律も勉強しなければ。
ありがとうございました。
No.1
- 回答日時:
⇒暦注計算 - 高精度計算サイト(
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 )
ツェラーの公式 素敵ですね! どんな仕組みかと思いましたが、高校数学の内容でも充分理解できるもので導出も含めて面白かったです。リファレンスも充実していました。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCEL 和暦を西暦に変換する方法について 4 2023/03/02 20:57
- その他(暮らし・生活・行事) 年を和暦で言われたとき瞬時に西暦に変換する方法ってありますか? 履歴書などを書く際にすごくめんどくさ 2 2022/07/25 01:01
- Excel(エクセル) Excelで、昭和の西暦換算 6 2023/03/23 11:29
- 戸籍・住民票・身分証明書 運転免許証の更新期日って何でわざわざ元号(令和)表紙なんでしょうか? 特に元号が変わった時前の元号が 3 2023/05/04 12:45
- Access(アクセス) Accessのデータ型の日付/時刻型について 2 2023/02/14 07:40
- C言語・C++・C# C言語のwhileを使ってプログラムを組みたいです!自分でやってみたのですが答えが合わないので教えて 3 2022/06/30 18:08
- 人類学・考古学 今の世の中は西暦をよく使いますが、西暦を数え始めたのはイエス・キリストの生まれた頃からずっと数え続け 2 2023/06/18 15:49
- Visual Basic(VBA) エクセルでフォームのチェックボックスを使用した日付表示切替を作りたい 3 2023/07/11 10:47
- 数学 少子化が進み産まれる子数が減りました。 これは、未来にて大人の数が減ることを示しています。 その子等 2 2022/12/24 15:24
- Excel(エクセル) エクセルの日付表示を変換するやり方をご存じの方は教えて下さい。 7 2022/12/28 15:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JavaScriptの修正を助けて下さい
-
C#OpenCv V4にのエラーに関する...
-
ローカルにあるファイルを検索...
-
秒もリアルタイムで表示させたい
-
「続きを読む」ボタンを押すと...
-
html javascript リンク先アド...
-
なぜmatchメソッドがエラーにな...
-
HTMLの毎月の更新を自動的に行...
-
C#で、ContextMenuStripに動的...
-
JavaScriptでdocument.fileCrea...
-
javascriptエラーの解決策について
-
C# 演算 奇数と偶数 表現の仕方
-
HTMLで作った時報アプリが動き...
-
半角と全角の文字数について
-
window.openでタイトル名の指定
-
二次元配列を使って順位をだす...
-
Javascriptの丸括弧の意味
-
○歳△ヶ月と×日を計算してくれる...
-
LightBoxで
-
<a>タグのテキストを取得
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C#で、ContextMenuStripに動的...
-
ASP.NET MVCでObjectをjsに渡す
-
ローカルにあるファイルを検索...
-
C#OpenCv V4にのエラーに関する...
-
google apps scriptの終了のさせ方
-
イベントが初めの一回しか起き...
-
ジェネレーターの作り方
-
JavaScriptで文字列の特定文字...
-
javascriptでテーブルに追加し...
-
なぜmatchメソッドがエラーにな...
-
ASP.NETのコントロールの値をJa...
-
javascriptでiframeのURL変更は?
-
翌月を取得するGASが分かりません
-
1日1回だけ引けるjavascriptお...
-
商品コードを入力で、商品名、...
-
JavaScriptで平日のみをカウン...
-
jsによって検索プルダウン、都...
-
C# 演算 奇数と偶数 表現の仕方
-
GASでundefinedエラーが出ます
-
gas スプレッドシートがアクテ...
おすすめ情報