setFromJulian static method

Time setFromJulian(
  1. double jd,
  2. bool UTC
)

儒略日数转公历,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;
}