2011-12-22 7 views
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

何が私を悩ませているのです!それはあるグループによって決められた標準ですか?それは歴史的にちょうどこのように行われていますか?

日付を直接変換するアルゴリズムを考え出す方が効率的ではないでしょうか?逆に、ジュリアン時代を効率的にする理由は何ですか?

答えて

7

n異なるカレンダーに変換し、いずれかの形式から他の形式に移行するアルゴリズムを実装した場合は、n^2 - n変換アルゴリズムが必要です。しかし、代わりにカレンダー形式を1つのベースラインカレンダー形式に変換するアルゴリズムを書いて、ベースライン形式から他の形式に変換するアルゴリズムを書いた場合は、2(n-1)のアルゴリズムを書くだけです。

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

特定の変換アルゴリズムは基本的には入力日付を取り、それを中立に変換して日付表現に変換してから変換しますが、あるフォーマットからJulian Dateへの変換が遅くなると思うかもしれません。それを目的のカレンダー形式に変換します。しかし、Julian Dateはシンプルなシングルナンバーフォーマットなので、Julian Dateに変換してから他のフォーマットに変換すると効果的に同じ効果が得られますので、パフォーマンスの向上はごくわずかです。また、カレンダーの変換はアプリケーションのパフォーマンスのボトルネックではないため、おそらく最も可能性の高いパフォーマンスを絞り込むことは、おそらく誰かの時間を有効に活用するものではありません。

+0

私はおそらくボトルネックではないことを理解しています。いくつかの異なるシステム間で共通の「中間者」を使用するようなことはちょっと変わった解決策でした。メンテナンスの観点からは、今より意味をなさない –

+3

ほとんどすべてのタイプの変換では、何らかの「中間者」を使用する予定です。画像をJPEGからPNGに変換しているとします。あなたはJPEGデータを取ってPNGに直接変換するつもりはありません。 JPEGをビットマップに展開して、各ピクセルのカラー値を取得し、それをPNG形式に圧縮します。 JPEG圧縮からPNG圧縮への直接的な変換は非常に難しいでしょう。 –

関連する問題