写万年历时用了你的农历,干支,节气等算法.但该算法中月日干支以立春为界,年和生肖却不是,所以我简单修改了一下,统一以立春为界:
year--;
year++;
阳历:2017年1月5日(魔羯座)
农历:2016年腊月初八,丙申年庚子月壬辰日(猴年)
非常感谢,发现你有准备24节气,但Demo中24节气没看见,调用的话calendar.getTerm(19873),只得到41是小寒,4不应该是雨水吗,为什么说是立春,能依靠传入(199911)得知它是在什么节气之后吗?
@赤羽飞鸿:理论基础:24节气很有规律,因为是将地球绕太阳公转划分24等分确定的时间点,而阳历又是地球绕太阳公转一周来划分年份的,所以阳历中每个月有两个节气.
calendar.getTerm方法第一个参数是阳历年份,第二参数是该阳历年24个节气中第几个,这里的24节气个数以小寒为开始,也就是第二个参数中1表示小寒,24表示冬至,由前面的理论基础可以得知getTerm方法的第二个参数与阳历月份也是有关联关系的,换种说法一年中第1个,第2个节气必定在这一年的1月,而第3个,第4个节气必定在这一年的2月,以此类推.
举两个例子:
例子1:想获得2016年立冬节气是11月<为什么立冬节气必定在11月呢?前面的理论基础决定的>的哪一天,传参方法为calendar.getTerm(201611*2-1),返回结果7,即表示2016年11月7日为立冬(今天就是立冬,第二个参数刻意写成11*2-1,当中的11即为11月,直接写成calendar.getTerm(201621)可以理解成:2016年第21个节气<从小寒为1算起,第21个节气为立冬>的日期是哪一天,因为阳历每个月有2个节气,所以第21个节气所在的月份很容易推算出来,也就是11月);
例子2:那么2016年11月的第二个节气也就是小雪又是11月的哪一天呢?(同样含义的问法:2016年第22个节气在11月的哪一天?)写法:calendar.getTerm(201611*2),返回结果22,表示2016年11月22日为小雪,以此类推.