我很菜,一点也看不懂,请帮忙吧,我只想显示日期时间和相应的节气。

解决方案 »

  1.   

    老历新历的算法,我都不太清楚~
    不知道怎么算~
      

  2.   

    请大家帮手顶呀,即使讲过思路出来都好呀
      

  3.   

    一个笨方法但很有效的办法:在万年历程序中查出每年24节气的开始日期,存在程序数组里面,或者存到数据库。
    然后就是拿一个日期去其中对比,就可以轻松判断节气了。
      

  4.   

    农历中一种日月兼顾的历法,
    月份是以月为历,
    节气是以日为历,
    地公转轨道是一个以太阳为一个焦点的椭圆,
    以近日点为0度,以太阳为中心,
    将地球公转所扫过的角度每十五度的界点所在日期便是一个节气。
    (可以运用立体几何算出,春分秋分大阳直射赤道,地球任意一经纬处日夜时间相等;夏至冬至太阳直射回归线[假设地球是个圆球])
    以上是基本知识,再分析一下代码。
    代码1。
    var sTermInfo = new Array(0,21208,42467,63836,85337,107014,128867,150921,173149,195551,218072,240693,263343,285989,308563,331033,353350,375494,397447,419210,440795,462224,483532,504758)
    //每年的正小寒点到各节期正节期点(即十五度倍数点)的分种数。
    //地球公转每年都一样
    //由于公转轨道是椭圆,故这个数列并不是准确的等差数列
    代码2
    //===== 某年的第n个节气为几日(从0小寒起算)
    function sTerm(y,n) {
       var offDate = new Date( ( 31556925974.7*(y-1900) + sTermInfo[n]*60000  ) + Date.UTC(1900,0,6,2,5) )
       return(offDate.getUTCDate())
    }31556925974.7为地球公转周期,是毫秒。(如果换算成天,是265.242199天,所以每四百年就有97个闰年,同样,我们也可以看到,如果这样做的话,一百三十万年后,我们的公历算法将有一天的误差)( 31556925974.7*(y-1900) + sTermInfo[n]*60000  )----表示y年的第n个节气点(15倍数度点)距1900年的小寒点的毫秒数。
    Date.UTC(1900,0,6,2,5)----表示1900年一年六日两点五分是正小寒点。
    以上两者相加得到的是:y年的第n个节气点时点的int值
    var offDate = new Date( ( 31556925974.7*(y-1900) + sTermInfo[n]*60000  ) + Date.UTC(1900,0,6,2,5) )----得出毫秒对应的日期