春分、秋分、夏至、冬至の求め方
|
水野さんが明快なアイデアをだしています。[Delphi-ML:38594]
春分、秋分、夏至、冬至の求め方は、単純に1997年の春分、夏至、秋分、冬至の日時に、地球が太陽の周りを回る周期(365.2422日)を足したり引いたりするだけのものです。
ただ、ここ20〜30年くらいの春分、秋分の日は、上の式で求めたものと同じだそうです。
実際は、計算して人間(政府)が決めるらしいですね。
カレンダーなどの作成に大変便利です。
下記のコードは、時刻部を省略し、日付のみに変えてあります。
type
TSeason = (seVernalEquinox, seSummerSolstice, seAutummnalEquinox, seWinterSolstice);
function JapanHoliday4(myYear: Integer; mySeason: TSeason): TDateTime;
var
myDate: TDateTime;
begin
case Integer(mySeason) of
0: myDate:= StrToDateTime('97/03/20 22:55') + 365.2422 * (myYear - 1997); //春分
1: myDate:= StrToDateTime('97/06/22 03:55') + 365.2422 * (myYear - 1997); //夏至
2: myDate:= StrToDateTime('97/09/23 08:56') + 365.2422 * (myYear - 1997); //秋分
3: myDate:= StrToDateTime('97/12/21 18:49') + 365.2422 * (myYear - 1997); //冬至
end;
Result:= Int(myDate);
end;
またコンポーネントでは、
Delphian World < http://www.delphianworld.com/ >;
に「祝祭日カレンダー」というのがあります。
秋分・春分計算もしてくれる様です。 |
|