ジュリアン通日(Julian date)を求めるC関数

必要に迫られて作った“ジュリアン通日(Julian date)”変換関数(C言語)です。

long toJulianDate(int year, int month, int mday) {
int a = (14 - month) / 12;
int y = year + 4800 - a;
int m = month + 12 * a - 3;
return mday + y * 365 - 32045
+ int((153 * m + 2) / 5)
+ int(y / 4) - int (y / 100) + int (y / 400);
}

void toYMD(long jdate, int& year, int &month, int &mday) {
int j = jdate + 32044;
int g = j / 146097;
int dg = j % 146097;
int c = (dg / 36524 + 1) * 3 / 4;
int dc = dg - c * 36524;
int b = dc / 1461;
int db = dc % 1461;
int a = (db / 365 + 1) * 3 / 4;
int da = db - a * 365;
int y = g * 400 + c * 100 + b * 4 + a;
int m = (da * 5 + 308) / 153 - 2;
int d = da - (m + 4) * 153 / 5 + 122;

year = y - 4800 + (m + 2) / 12;
month = (m + 2) % 12 + 1;
mday = d + 1;
}

JulianDateの7の剰余から曜日も求められます。7で割った余りが0→月曜日,1→火曜日,…,6→日曜日,になります。


タグ:C++
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス: [必須入力]

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
rank← ランキングはこちらをクリック!

×

この広告は180日以上新しい記事の投稿がないブログに表示されております。