setFromJulian static method
儒略日数转公历,UTC=1表示目标公历是UTC
@param jd jd @param UTC UTC
Implementation
static Time setFromJulian(double jd, bool UTC) {
Time time = new Time();
if (UTC) jd -= atomTimeDiff(jd - J2000);
jd += 0.5;
// 取得日数的整数部份A及小数部分F
double A = doubleFloor(jd);
double F = jd - A;
double D;
if (A > 2299161) {
D = doubleFloor((A - 1867216.25) / 36524.25);
A += 1 + D - doubleFloor(D / 4);
}
A += 1524; // 向前移4年零2个月
time.year = doubleFloor((A - 122.1) / 365.25); // 年
D = A - doubleFloor(365.25 * time.year); // 去除整年日数后余下日数
time.month = doubleFloor(D / 30.6001); // 月数
time.day = D - doubleFloor(time.month * 30.6001); // 去除整月日数后余下日数
time.year -= 4716;
time.month--;
if (time.month > 12) time.month -= 12;
if (time.month <= 2) time.year++;
// 日的小数转为时分秒
F *= 24;
time.hour = doubleFloor(F);
F -= time.hour;
F *= 60;
time.minute = doubleFloor(F);
F -= time.minute;
F *= 60;
time.second = F;
return time;
}