干支历算

纪年历法据说萌芽于西汉初,始行于王莽,通行于东汉以后,汉章帝元和二年(公元85年),朝廷下令在全国推行干支纪年,这便是当今使用的干支纪年历法。首先检视的是由十天干(甲乙丙丁戊己庚辛壬癸)和十二地支(子丑寅卯辰巳午未申酉戌亥)组成的60干支数组:

一、干支数组

function gzall()
{
  var g, z, t = "";
  var tg = "甲乙丙丁戊己庚辛壬癸";
  var dz = "子丑寅卯辰巳午未申酉戌亥";
  for(var i=0; i<60; i++){
    g = i % 10;
    z = i % 12;
    t += tg.charAt(g) + dz.charAt(z);
  }
  return t;
}
( t = "甲子乙丑丙寅丁卯戊辰己巳庚午辛未壬申癸酉甲戌乙亥丙子丁丑戊寅己卯庚辰辛巳壬午癸未甲申乙酉丙戌丁亥戊子己丑庚寅辛卯壬辰癸巳甲午乙未丙申丁酉戊戌己亥庚子辛丑壬寅癸卯甲辰乙巳丙午丁未戊申己酉庚戌辛亥壬子癸丑甲寅乙卯丙辰丁巳戊午己未庚申辛酉壬戌癸亥"; )

二、儒略日数(Julian Day Number,JDN)

纪年计算先计算儒略日数,然后计算出干支年、干支月、干支日、干支时,俗称八字。
儒略日数公式 (s=1取整数至中午12时正,s=0 或 !s 精准到时分秒小数):
function getjd(s)
{
  var now = new Date();
  var cTZ = now.getTimezoneOffset()/60;
  var cJD = now/86400000-10957.5-cTZ/24;
  var jv = cJD + 2451545;
  var jd = Math.floor(jv + 0.5);
  if(s==0) return jv;
  else return jd;
}

  

儒略日数转公元年月日(s=0取年份,s=1取月份,s=2取日期)
function jdtoad(jv, s)
{
  var c, d;
  d = Math.floor(jv + 0.5);
  if(d>=2299161) {
    c = Math.floor((d - 1867216.25) / 36524.25);
    d += 1 + c - Math.floor(c/4);
  }
  d += 1524;
  var y = Math.floor((d - 122.1) / 365.25);
  d -= Math.floor(365.25 * y);
  var m = Math.floor(d/30.601);
  d -= Math.floor(30.601 * m);
  var a = d;
  if(m>13) {
    m -= 13;
    y -= 4715;
  }else {
    m -= 1;
    y -= 4716;
  }
  if(s==0) return y;
  else{
    if(s==1) return m;
    else return a;
  }
}

三、干支年月日时

笔者打包了整个儒略周期(1929至3268年共7980年)的黄经12节点的 欢迎同好参考指正。 留言版

  

由 叮咚 创作

凡间烦小子,梦里闷痴人。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据