Skip to content

将公历(格里高利历)日期转化为儒略日期

Robert Yao edited this page Jul 1, 2019 · 1 revision
/**
 * 将公历(格里高利历)日期转化为儒略日期
 * ========================================================================
 * @param {Number} year - 表示年份的数值
 * @param {Number} month - 表示月份的数值
 * @param {Number} date - 表示日期的数值
 * @returns {number}
 */
const convertCE2JD = (year, month, date) => {
  let M = 0
  let Y = 0
  let B = 0
  let JD

  if ([
    1,
    2
  ].includes(month)) {
    M = month + 12
    Y = year - 1
  } else {
    Y = year
    M = month
  }

  if (Y > 1582 || (Y === 1582 && M > 10) || (Y === 1582 && M === 10 && date >= 15)) {
    // 公元1582年10月15日以后每400年减少3闰
    B = 2 - parseInt(Y / 100) + parseInt(Y / 400)
  }

  JD = Math.floor(365.25 * (Y + 4716)) + parseInt(30.6 * (M + 1)) + date + B - 1524.5

  return JD
}
You can’t perform that action at this time.