一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

JavaScript实现公历转农历功能示例

时间:2017-03-29 编辑:简简单单 来源:一聚教程网

 

 代码如下 复制代码

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

公历转农历

要保存一年的信息,其实只要两个信息就可以了:1.农历每个月的大小?
2.今年是否有闰月.
3.闰几月以及闰月的大小.

用一个整数来保存这些信息就足够了.
具体的方法是:用一位来表示一个月的大?
 笤录俏?,小月记为0,这样就用掉12 位(无闰月)或13  位(有闰月),再用高4位来表示闰月的月份,没有闰月记为0.
比如说,2 0 0 0 年的信息数据是0 x C 9 6  ,化成二进制就是110010010110B,表示的含义是指1、2、5、8、10、11月大,其余月小.
2001  年的农历信息数据是0x41A95,其中4表示今年闰4月,月份大小信息就是0x1A95(因为闰月,所以有13  位),具体的就是1、2、4、5、8、10、12月大,其余月份?
?x1A95=1101010010101B),4月的后面那一个0表示的是闰4月?
  幼诺哪歉?表示5月大.
这样就可以用一个数组来保存这些信息.
在我的JavaScript脚本程序中是用CalendarData[]这个数组来保存这些信息的.
下面就是公历转换成农历的具体算法:1.计算出所求时间到起始年正月初一的天数.
2.从起始年份开始,减去每一月的天数,一直到剩余天数没有下一个月多为止.
此时,CalendarData[]的下标到了多少,就是减去了多少年,用起始年份加上这个下标就可以得到农历年份,然后看减去了几个月.
如果本年不闰月或者闰月还在后面,就可以直接得到农历月份,如果在闰月月份数后面一个月,则这个月就是闰月,如果在闰月的后面,则要减去1  才能得到月份数.
剩余的天数就是农历日,农历时用(公历时+1)/2 就可以简单地得到了.


 

运行效果图如下:

热门栏目