サンプル・プログラム:ユリウス日版 |
|
|
紀元前 4713 年 1 月 1 日からの通日をあらわす「ユリウス日」(Julian Day)というものがある。これであれば人類の有史時代全体を網羅できるので、天文学や歴史学で重宝されている。
2番目のサンプルプログラムは、ユリウス日を使って「次の日曜日」を計算するものである。 |
|
サンプル・プログラムの解説:ユリウス日を計算する |
|
|
西暦年月日(グレゴリオ暦)からユリウス日を求めるのがユーザー関数 Gregorian2JD である。
0027: /** |
|
サンプル・プログラムの解説:checkdateのユリウス日版 |
|
|
西暦年月日(グレゴリオ暦)が正しいかどうかを判断する関数 checkdate のユリウス日版が、ユーザー関数 mycheckdate である。
ここで、西暦 0 年未満、1 万年以上はエラーとしている。 ユリウス日にしても、32 ビット長整数で計算している限り、西暦 1175 万 4266 年にオーバーフローを起こしてしまう。天文学の世界ではあり得ない年数ではないので、エラーチェックをしておく必要がある。
0071: /** |
|
その他の解決策 |
|
|
--enable-calendar オプションでコンパイルされている PHP であれば、ユリウス日関係の関数のカレンダー関数が用意されている。
PEAR が利用できる環境であれば、PEAR::Date を使ってカレンダー計算を行うことができる。 |
|
参考書籍 |
|
|
|
参考サイト |
|
|
|
|
|
|
|
|
2008年08月28日 作成
2009年06月23日 更新
Copyright by studio pahoo, (C)2009
(※)本ページはリンクフリーですが、複製・転載時にはご一報ください。 ★本ページへのご意見・ご質問・お便りは、ここをクリックしてください。 |