Yahoo!みんなの検定 スタッフブログ

みんなの検定での検定作成や受験に役立つ情報をお届けします。

その他

[ リスト ]

暦の計算

技術のしらたまです。

今日は春分の日に関連して暦に関する技術的な話をさせていただきたいと思います。


暦の計算とは、たとえば2012年3月20日から400日後は何年何月何日かを計算することです。
この暦の計算は意外と面倒です。
なぜ面倒かというと足し算や引き算を行うために2012年3月20日を数値に変換する必要があるからです。

具体的な計算の流れは、

1. 2012年3月20日を、基準となる年からの日数に変換する
2. 1で計算された日数に400日を足す
3. 2で400日を足された日数を暦に変換する

つまり足したり引いたりできるよう暦を数値(日数)に変換して計算します。


これだけだと話は簡単なのですが、考えなければならないことはもう一つあります。
それが「うるう年」です。


暦を数値の形に変換(または数値を暦に変換)する際にうるう年かどうかを考慮しないと
正しい暦が計算できません。

うるう年の定義は以下のようになります。

うるう年の定義
・4で割り切れる年はうるう年である
・ただし100で割り切れる年はうるう年でない
・ただし400で割り切れる年はうるう年である

これらを考慮して、2012年3月20日から400日後の暦を計算してみます。
(ただし日数を計算するための基準となる年を2000年1月1日とします)

1 2012年3月20日は2000年1月1日から数えて4462日(日数への変換)
2 4462日 + 400日 = 4862日(400日を足す)
3 2000年1月1日から4862日後は2013年4月24日(暦への変換)

無事に計算できました。


しかしこれは暦が「グレゴリオ暦」である場合に正しい計算となります。


少し前に新しい暦についてのこんなニュースを見かけました。

“閏週”で曜日を固定する新しい暦
http://zasshi.news.yahoo.co.jp/article?a=20120118-00000000-natiogeo-int

確かに毎年曜日が変わらない暦ならスケジュールは立てやすいと思います。
しかし、もしこの暦が採用されたならば、上で述べた計算方法はすべて成り立ちません。

暦の変更に対するプログラムの修正は大変なんです。

閉じる コメント(1)

あけましておめでとうございます
暦って、占いごとでは大切なことですよね〜
今年は、ブログと検定と知恵ノートの復活を考えていますので、
これからもよろしくお願いいたします。

2013/1/3(木) 午後 0:27 舞夢


プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事