4

現在、日付をグレゴリオ暦からヘブライ暦に変換する PHP コードをいくつか書いています。PHPのカレンダー関数を見てみると、グレゴリオ暦からユリウス暦へ、ユリウス暦からヘブライ暦へ変換する機能があることがわかりました。ただし、グレゴリオ語からヘブライ語に直接変換する関数は見つかりませんでした。

好奇心から、直接変換が可能かどうかを確認したかった. ただし、これを調査しているときに、日付をユリウス日に変換してから、目的の暦体系に変換するのが標準のように思われることがわかりました。

私はこれを次のようないくつかのライブラリで見つけました: http://www.php.net/manual/en/ref.calendar.php http://www.fourmilab.ch/documents/calendar/calendar.js

フォーラムの投稿で言及されています: http://www.physicsforums.com/showthread.php?t=173119

私を悩ませているのはなぜですか!どこかの団体が決めた基準ですか?歴史的にこのように行われているだけですか?

日付を直接変換するアルゴリズムを考え出す方が効率的ではないでしょうか? または逆に、ユリウス日が非常に効率的である理由は何ですか?

4

1 に答える 1

7

異なるカレンダー間で変換nする必要があり、ある形式から別の形式に変換するアルゴリズムを実装した場合は、n^2 - n変換アルゴリズムが必要になります。ただし、代わりに、任意のカレンダー形式を 1 つのベースライン カレンダー形式に変換するアルゴリズムを記述し、ベースライン形式から他の形式に変換するアルゴリズムを記述した場合は、2(n-1)アルゴリズムを記述するだけで済みます。

これらのカレンダー形式はすべて同じもの、つまり時間を表しています。時間を表現する最も基本的な方法は、基準点からの経過時間であるため、ベースライン形式として最も理にかなっています。これはまさにユリウス日であり、紀元前 4713 年 1 月 1 日グリニッジ正午からの日数です。

ある形式からユリウス日付に変換してから別の形式に変換するのは遅いと思うかもしれませんが、特殊な変換アルゴリズムは基本的に入力日付を取得し、それを日付表現の間の中立的なものに変換してから、それを目的の日付に変換しますカレンダー形式。ただし、ユリウス日は単純な単一の数値形式であるため、これは事実上、ユリウス日に変換してから他の形式に変換することと同じであるため、パフォーマンスの向上はごくわずかです。また、カレンダーの変換はおそらくどのアプリケーションのパフォーマンスのボトルネックにもならないので、カレンダーの変換から最大限のパフォーマンスを引き出すことは、おそらく誰の時間も無駄にします。

于 2011-12-22T03:23:55.337 に答える