フリーソフト

« [Delphi] 日付から曜日を計算する方法 | トップページ | [Delphi] 2地点の緯度経度からその間の距離を計算する »

[Delphi] 修正ユリウス通日と年月日の変換

uses Math;

//年月日から修正ユリウス通日へ
function YMD2MJD(y,m,d:Integer):Integer;
begin
 if (m = 1) or (m = 2) then begin
  y:=y-1;
  m:=m+12;
 end;
 //フリーゲルの公式
 Result:=Floor(365.25*y) + (y div 400) - (y div 100) + Floor(30.59*(m-2)) + d -678912;
end;

//修正ユリウス通日から年月日へ
procedure MJD2YMD(mjd:Integer; var y,m,d:Integer);
var
 k:Integer;
begin
 y := Floor( (mjd - 15078.2) / 365.25 );
 m := Floor((mjd - 14956.1 - Floor(y*365.25)) / 30.6001 );
 d := mjd - 14956 - Floor(y*365.25) - Floor(m*30.6001);
 If (m = 14) or (m = 15) then k := 1
 else k := 0;
 y := y + k + 1900;
 m := m - 1 - k*12;
end;

ユリウス通日は紀元前4713年1月1日からの経過日数を表します。修正ユリウス通日はユリウス通日から2400000.5引いたものでMJD(Modified Julian Day)と略されます。ユリウス通日は2つの日付間の日数を計算したりするの使えます。とはいっても、標準で用意されている関数があるのでわざわざ実装することはないと思いますが。ご参考まで。 

« [Delphi] 日付から曜日を計算する方法 | トップページ | [Delphi] 2地点の緯度経度からその間の距離を計算する »

Delphi」カテゴリの記事

日付時刻の処理」カテゴリの記事

コメント

この記事へのコメントは終了しました。