当前位置:文档之家› 农历大小月的算法

农历大小月的算法

农历大小月的算法
农历大小月的算法

农历每月的大小确定方法

农历年各年的每个月的天数是不固定的,月大每月30天,月小每个月29天,要是遇到闰年的话,还得多出一个月,这个多出来的月也是有大小之分的,那么农历每个月有多少天是怎么确定的呢?有个简单的方法:要知道某年开始数起的第九年各月的天数(各月的大小),我们可以查询今年各月初一那天的干支(天干地支),按照“大月天干进四,地支进八;小月天干进三,地支进七”的方法即可推算出某年开始数起的第九年各月初一那一天的干支,然后再计算每月的后面那个月初一那天的干支编号与该月的初一那天的干支编号之差的绝对值,如果此值大月30则计算结果应为60减去此值的差。

例如:如果我们想知道农历2012年各月的大小。我们先从2004年的历书中查到各月初一那天的干支及其大小:正月小,庚子;二月大,己巳;闰二月小,己亥;三月大,戊辰;四月大,戊戌;五月小,戊辰;六月大,丁酉;七月小,丁卯;八月大,丙申;九月小,丙寅;十月大,己未;冬月小,乙丑;腊月大,甲午。那么按照下图所示的编号再结合即可立即推算出2012年各月初一那天的干支(注意:如果推算出的天干编号超过10,则使用算出的编号数减去10;如果推算出的地支编号超过12,则计算结果应为算出的编号减去12)分别为:第一月,癸未;第二月,癸丑;第三月,壬午;第四月,壬子;第五月,壬午;第六月,辛亥;第七月,辛巳;第八月,庚戌;第九月,庚辰;第十月,己酉;第十一月,癸卯;第十二月,戊申;第十三月,戊寅。呵呵,赶紧查下2012年的历书是不是有十三个月并且从正月到腊月每月的初一日的干支都与推算出的完全相符呢?

天干编号表

地址编号表

这样再从60甲子表(把60甲子按顺序从甲子为1开始编号)中查出推算出的每月初一日的干支即可算出每月的天数,从而确定每个月的大小了:根据查表并计算得知2012各月的天数分别为:|(50-20)|=30;60-|(50-19)|=29;

|(49-19)|=30;|(19-49)|=30;|(48-19)|=29等,不过这样只能算出12个月的天数,最后一个月的天数还要根据相同的方法推算出2013年正月初一的干支,才能确定。

干支编号表

农历阳历阴历公历的差别

论农历、阳历、阴历、公历的差别 现在人们生活中最常接触到的历法有两种:一种为公元**年*月*日的形式;一种为几月初几的形式。 但是人们通常提到的历法名称却有三种:即农历、阳历、阴历、公历。 由于不能一一对应,所以产生了很多的争论。 有说农历就是阴历的,就是几月初几的形式。(百度百科上就是持这种观点的)这种比较普遍,从小我母亲就这么教我。 也有说农历就是阳历,就是公元**年*月*日的形式。持这种说法的人给的理由看上去比较科学。 我在对比了几种说法之后,自己也有了一些看法。 在我想来,历法的由来是为了方便,开始是为了记事方便。人们从日升日落中确定了基准:天。 由于天的单位太小,人们可能又先后确定了月和年的概念。 月来自月亮的圆缺变化,变化一个周期为一月,我们称之为“朔望月”,一个“朔望月”大约29.5309天,下面只按29.5天来说明。 年来自地球绕太阳公转产生的寒暑交替,四季变换,一个周期为一年,我们称之为“回归年”,一个“回归年”365天多一点,下面只按365天来说明。 如果一种历法按照月亮圆缺变化而来,我们称之为阴历;同样如果一种历法按照地球绕太阳公转而来,我们称之为阳历。 有了这个大概念,我觉得我们的祖先首先有了阴历。并确定一个月30天,下一个月29天,间隔着来,平均每月29.5天。 这种历法12个月后254天,比一年少11天。我查到了我们祖先的两种解决方法。 方法一: 示例为回回历,伊斯兰教采用这种历法,这种历法不采用闰月,每年都是12个月,都是354天。导致每年的寒暑月份不确定,也就是说,可能今年冬天是5月份,过些年冬天变成了10月份。 方法二: 就是我们现在还能常接触到的几月初几形式的历法。这种历法采用闰月,每两三年就加入一个闰月。这种历法以“朔望月”为基准,兼顾“回归年”,所以比较科学实用,到现在还在用。

农历历算和编历规则2014版

农历历算和编历规则(2014版) 农历又被称为夏历、阴历、旧历、中历、华历,我国已经用了几千年,是东亚传统历法之一。农历属于一种阴阳历,平均历月等于一个朔望月,设置闰月使平均历年为一个回归年,设置二十四节气以反映季节,所以又有阳历的成分。至今几乎全世界所有华人及朝鲜、韩国和越南及早期的日本等国家,仍使用农历来推算传统节日如春节、中秋节等节日。 农历还使用干支纪年,因此就每60年重复六十甲子。如公元1991年称为辛未年,公元2051年也为辛未年。从汉武帝时期开始,皇帝年号与干支同时使用,以避免重复。如清同治三年、甲子年。农历还使用干支纪日。古代史书上不记月之几日,而记月之干支日,读古代史书就必须查明该月朔日的干支,再按干支纪日法顺推是月之第几日。 中国历朝颁布的历书,历理均大同小异。编历规则不变、改革的是推算方法。史上推算农历方法有几十种之多,还好各时期的史书都有收录中国历朝颁行历书的推算方法;史书有收录我在编写《电脑医生万年历》和《福星万年历》(简称程序、下同)时才能还原史实农历。程序在网上发布后得到广大网友的支持,同时也有网友来信或来电询问古今农历推算方面的问题。现在我专门把这些常见问题知识写出来。以飨网友。 程序选用还原的颁行历及使用年限 一、农历(又称:夏历、旧历、中历、华历) 1、农历历算和编历常用术语 黄经:是在黄道座标系统中用来确定天体在天球上位置的座标值、共分成360度、在这个系统天球被黄道平面分割为南北两个半球,太阳移到黄经0度为春分、移到黄经90度为夏至、移到180度为秋分、移到270度时为冬至。 朔日:月球移到地球和太阳中间时的那一天叫朔日。 平朔:用朔望月的平均长度计算、没考虑日月运行的不均等性;缺点:―含有真正的―朔‖的当天有时可能会出现在前一月的最后一日(―晦日‖、廿九日或卅日),有时会出现在初二‖。 定朔:计算考虑了日月运行的不均等性,将含有真正―朔‖的当天作为每月的开始。 平气:计算不考虑太阳在黄道上运动快慢不匀,平气两个节气之间的天数15.22天。 定气:计算考虑太阳在黄道上运动快慢不匀,定气两个节气之间的天数不一样、短的只有14天、长的达16天。 冬至日:冬至交接时间所在的那一天就叫冬至日。 冬至日必须在子月:冬至日当天或冬至日前的那个朔日定为子月初一―起点‖(注意:起点和算命不同)。 建正:年首月份,所说的建正就是―夏正:夏历正月建寅[子月为11月];殷正:殷历正月建丑[子月为12月]、鲁历同殷历;周正:周历(周朝历)正月建子[子月为正月];秦正:秦历《颛顼历》正月建亥[子月为2月]‖。 置闰:农历1个月就是1个朔望月、月的平均天数≈29.53059天,农历一年12个月≈354.367天;但是1回归年≈365.2422天,这样农历一年比回归年少≈10.866天,农历≈ 2.71771年就比回归年少1个月,如不调整过不了几十年就会出现冬、夏倒置。为了让农历年平均天数等于回归年农历≈2.71771年必须设一个闰月。置闰规则请看《历代农历编历规则》。 2、历代农历编历规则: 节气:一年分二十四个节气,清朝(公元1644年)以前用平气计算,清朝(公元1644年)以后用定气计算。 月策规则:朔日为每月起点(初一日);朔日(月初一日)到下个朔日(下月初一日)有多少天、这月就有多少天。有30天为大月、有29天为小月;唐朝(公元619年)以前用的是平朔、唐朝(公元619年)以后用的是定朔。

农历闰年闰月上下1000年表

闰年、闰月 什么是闰月?每逢闰年所加的一个月。阴阳历以朔望月的长度(29.5306日)为一个月的平均值,全年12月,同回归年(365.2422日)相差约10日21时,故顺置闰,三年闰一个月,五年闰二个月,十九年闰七个月。闰月加在某月之后叫“闰某月”。《书.尧典》:“以闰月定四时,成岁。”孔传:“一岁有馀十二日,未盈三岁足得一月,则置闰焉。”《左传.文公六年》:“闰月不告朔,非礼也。闰以正时,时以作事,事以厚生,生民之道,于是乎在矣。不告闰朔,弃时政也,何以为民?” 农历为什么会有闰月?——农历置闰月是为了协调回归年与农历年的矛盾。 回归年与农历年有什么矛盾呢?先记住:回归年的总长度为365.2422日,朔望月的长度为29.5306日。 十二个朔望月构成农历年,长度为29.5306×12=354.3546日,比回归年少10.88天即将近11天,每个月少0.91天,近1天。 依此,如农历年某年春节为大雪纷飞的冬天,第二年的春节就会在季节上提前11天,第16个农历年就会出现在赤日炎炎的夏天。 如按十三个朔望月构成农历年,长度为29.5306×13=383.8978日,比回归年又多出18天多。 如果按上述规定制定历法,就会出现天时与历法不合、时序错乱颠倒的怪现象——这就是矛盾。 为了克服这一缺点,我们的祖先在天文观测的基础上,找出了“闰月”的办法,保证农历年的正月到三月为春季,四月到六月为夏季,七月到九月为秋季,十月到十二月为冬季,也同时保证了农历岁首在冬末春初。 农历年中月以朔望月长度29.5306日为基础,所以大月为30日,小月为29日。为保证每月的头一天(初一)必须是朔日,就使得大小月的安排不固定,而需要通过严格的观测和计算来确定。因此,农历中连续两个月是大月或是小月的事是常有的,甚至还出现过如1990年三、四月是小月、九、十、十一、十二连续四个月是大月的罕见特例。 那么多长时间加一个闰月呢?最好的办法就是求出回归年日数与朔望月的日数的最小公倍数:我们希望m个回归年的天数与n个朔望月的天数相等,也就是应有等式:m×365.2422=n×29.5306 在这个等式中我们不能直接求出m和n,但可以求出它们的比例: 这个比例的近似值分别为: 在这些分式中,分子表示回归年的数目,分母表示朔望月的数目。例如第六个分数式表示19个回归年中必须加7个闰月。 19个回归年中加7个闰月的结果比较: 19个回归年=19×365.2422=6939.6118(天) 一个朔望月有29.5306天,235个朔望月=235×29.5306=6939.6910(天) 19个回归年中加7个闰月后,矛盾消除得只差:6939.6910-6939.6018=0.0892(天)——即2小时9分多,这已经是够精确的了。 所以,农历就采用了19年加7个闰月的办法,即“十九年七闰法”,把回归年与农历年很好地协调起来,使农历的元旦(春节)总保持在冬末春初。古人把235个朔望月称之为“闰周”。 农历置闰的方法可以使农历年的平均长度接近回归年,而农历中的月又有鲜明的月相特征,保持了公历和阴历两全其美的特点。 现在置闰的方法是两个冬至之间,如仅有12个月则不置闰,若有13个月即置闰。置闰

公历和农历转换算法详解

公历和农历转换算法详解 //C51写的公历转农历和星期 #define uchar unsigned char #define uint unsigned int #include /* 公历年对应的农历数据,每年三字节, 格式第一字节BIT7-4 位表示闰月月份,值为0 为无闰月,BIT3-0 对应农历第1-4 月的大小第二字节BIT7-0 对应农历第5-12 月大小,第三字节BIT7 表示农历第13 个月大小 月份对应的位为1 表示本农历月大(30 天),为0 表示小(29 天) 第三字节BIT6-5 表示春节的公历月份,BIT4-0 表示春节的公历日期 */ code uchar year_code[597] = { 0x04,0xAe,0x53, //1901 0 0x0A,0x57,0x48, //1902 3 0x55,0x26,0xBd, //1903 6 0x0d,0x26,0x50, //1904 9 0x0d,0x95,0x44, //1905 12 0x46,0xAA,0xB9, //1906 15 0x05,0x6A,0x4d, //1907 18 0x09,0xAd,0x42, //1908 21 0x24,0xAe,0xB6, //1909 0x04,0xAe,0x4A, //1910 0x6A,0x4d,0xBe, //1911 0x0A,0x4d,0x52, //1912 0x0d,0x25,0x46, //1913 0x5d,0x52,0xBA, //1914 0x0B,0x54,0x4e, //1915 0x0d,0x6A,0x43, //1916 0x29,0x6d,0x37, //1917 0x09,0x5B,0x4B, //1918 0x74,0x9B,0xC1, //1919 0x04,0x97,0x54, //1920 0x0A,0x4B,0x48, //1921 0x5B,0x25,0xBC, //1922 0x06,0xA5,0x50, //1923 0x06,0xd4,0x45, //1924 0x4A,0xdA,0xB8, //1925 0x02,0xB6,0x4d, //1926 0x09,0x57,0x42, //1927 0x24,0x97,0xB7, //1928

农历运算

一年中哪个月大,哪个月小,年年不同,由计算决定。 一般的,在19年里中设置7个闰月,有闰月的年份全年383天或384天。 1.公历转换农历的算法 公历(Gregorian Calendar)与农历(Chinese Lunar Calendar)的转换关系不是一个简单的公式就可以完成,其中的转换比较复杂,原因是农历的制定相当复杂,是根据天文观测进行指定的。 比较常用并且比较简单的公历转换农历算法就是查表方法。 首先要保存公历农历的转换信息:以任何一年作为起点,把从这一年起若干年的农历信息保存起来(在我的C++类中,是从1900年作为起点的。选择一个起始点的思想十分重要,在下面的干支纪法和二十四节气中也体现到了)。回想一下,我们平时是怎样来转换公历农历的呢?是查阅历书,历书中有每一天的公历农历,直接一查就可以了。那么我们可不可以也这样做呢?当然可以,但是这样做要收录每一天的信息,工作量就会很大,所以我们要简化这些信息。如何简化呢? 要保存一年的信息,其实只要两个信息就可以了:(1)、农历每个月的大小;(2//今年是否有闰月,闰几月以及闰月的大小。用一个整数来保存这些信息就足够了。具体的方法是:用一位来表示一个月的大小,大月记为1,小月记为0,这样就用掉了12位,再用低四位来表示闰月的月份,没有闰月记为0。比如说,2000年的信息数据是0x0c960,转化成二进制就是1100100101100000,表示的含义是1、2、5、8、10、11月大,其余月小,低四位为0说明没有闰月。2001年的农历信息数据是0x0d954,其中的4表示该年闰4月,月份大小信息就是0x0d95,具体的就是1、2、4、5、8、10、12月大,其余月小。这样就可以用一个数组来保存这些信息。在我的C++类中是用m_lunarInfo这个数组来保存这些信息的。 下面就是公历转换成农历的具体算法: (1) 计算所求时间到起始年正月初一的天数。 (2) 从起始年份开始,减去每一月的天数,一直到剩余天数没有下一个月多为止。此时, m_lunarInfo的下标到了多少,就是减去了多少年,用起始年份加上这个下标就可以得到农历年份,然后看减去了几个月。如果本年不闰月或者闰月还在后面,就可以直接得到农历月份,如果在闰月月份数后面一个月,则这个月就是闰月。剩余的天数就是农历日。(具体实现时有所改进。)

阳历和阴历的区别

在清朝(也就是小燕子活着地时候)和它以前地朝代,过年就是过阴历年.阴历是皇帝批准地,所以也叫做皇历.它地历史可以追溯到我国古代地夏朝,所以也叫夏历.后来来了外国人,才知道他们用地又是一种历,叫做西洋历,或称西历、阳历. 在年地时候,有一次伟大地革命叫辛亥革命,它废除了我国最后一个皇帝,也割了男人头上地辨子,从此我国就没有了皇帝.从那时起,也废除了皇历,改用了阳历.但这次革命还是不太彻底,还保留了民国年号.也就是说从年开始叫民国一年,依次数下去. 阳历成了国家指定地历,阴历就变成民间地了,于是叫做旧历.从那时起,说过年,就有两个年.一个是阳历年,一个是阴历年,也叫旧历年,两个年和平共处,旧历年还占大头. 到了年.民国这个年号也被废除了.统一叫公元了,也同外国人一样从一千多年来开始数.这时为阴历年起了一个专用地名字,叫做春节.于是虽然民间仍在用阴历,但是过阴历地年不再说过阴历年或旧历年,而是说过春节.在字面和口头地称呼上,就只有一个年:阳历年了. 阴历是用月亮地周期来定月份地.月亮从没有开始慢慢地长大,变成满月,也就是圆圆地月亮,再慢慢地变小,最后再到没有,这时就叫一个月了.所以也叫月历.我国古代又把月亮叫太阴,所以便把月历称为阴历.月亮绕地球转一圈,大约二十九天半.所以阴历地一个月就是或天.把个月叫一年,一年就是或天.可是,地球绕太阳转一圈大约要三百六十五又四分之一天.经过阴历一年地时间,地球在公转轨道上并没有回到起点,还差十天左右.这样,三年就差一个月,年就差了半年.也就是说,年后,正月初一过年,就是在夏天而不是冬天了.这怎么办呢?我国古代天文学家想出了一个办法,就是每三年加一个月.平常年份是十二个月,加了一个月地年份叫闰年,是十三个月.这样虽然能够保证正月初一过年时是在冬天,但是,阴历正月初一这一天地球在公转轨道上地位置并不固定,从而其它日子地球在公转轨道上地位置也不固定,在每三年里,大概会差十几天.这就是为什么从阳历来看,春节有时在一月有时在二月地原因. 阴历还有一个名字叫农历.但农民并不能靠农历来种地,因为旧历地日子不固定.如果把种地地日子弄错几十天,收成就大受影响.为了解决这个问题,我国古代天文学家又想出个好办法,把地球公转地轨道分成份.也就是我国地节气.农民种田用地是这个二十四节气,而不是阴历. 阳历也就是太阳历,它是用地球围绕太阳公转地周期,把天定为一年,再把它分成个月.与阴历类似地,阳历地日子在公转轨道上地位置也是变动地,每年差一天,加在二月里.这样,阳历日子地摆动幅度很小,只有一两天.对于人们来说,这一两天就算不了什么,完全可以忽略了.所以,阳历不需要节气 阴历和阳历地区别和关系: 阳历也就是公历,它是国际通用地.阳历以地球绕太阳转一圈地时间定做一年,共天小时分秒.平年只计天这个整数,不计尾数;一年分做个月,大月天,小月天,二月只有天.四年地尾数积累起来共天光景,加在第四年地二月里,这一年叫做闰年.所以闰年地二月有天.阴历以月亮圆缺一次地时间定做一个月,共天半.为了算起来方便,大月定做天,小月天,一年个月中,大小月大体上交替排列.阴历一年只有天左右,也没有平年闰年地差别. 文档来自于网络搜索 阴历不考虑地球绕太阳地运行,因此使得四季地变化在阴历上就没有固定地时间,它不能反映季节,这是一个很大地缺点.为了克服这个缺点,后来人们定了一个折衷地历,就是所谓阴阳合历.现在我国还在使用地夏历(也有人叫它农历或阴历),就是这种阴阳合历.它跟阴历一样,也以月亮圆缺一次地时间定做一个月,也是大月天,小月天,可是它又用加闰月地办法,使得平均每年地天数跟阳历全年地天数相接近,来调整四季.夏历约每过二、三年多一个闰月.“阴历”又名“太阴历”,系以月球绕行地球一周为一月,再配合地球绕日一周之时数为一年,实际上等于阴阳合历,我国在民国元年前采用此历,为与现行之历相对称,故名之曰

农历闰年闰月上下1000年表

农历闰年闰月上下1000年表 1645年闰五月,1648年闰四月,1651年闰正月,1653年闰六月,1656年闰五月1659年闰三月,1661年闰八月,1664年闰六月,1667年闰四月,1670年闰二月1672年闰七月,1675年闰五月,1678年闰三月,1680年闰八月,1683年闰六月1686年闰四月,1689年闰三月,1691年闰七月,1694年闰五月,1697年闰三月1699年闰七月,1702年闰六月,1705年闰四月,1708年闰三月,1710年闰七月1713年闰五月,1716年闰三月,1718年闰八月,1721年闰六月,1724年闰四月1727年闰二月,1729年闰七月,1732年闰五月,1735年闰四月,1737年闰九月1740年闰六月,1743年闰四月,1746年闰三月,1748年闰七月,1751年闰五月1754年闰四月,1756年闰九月,1759年闰六月,1762年闰五月,1765年闰二月1767年闰七月,1770年闰五月,1773年闰三月,1775年闰十月,1778年闰六月1781年闰五月,1784年闰三月,1786年闰七月,1789年闰五月,1792年闰四月1795年闰二月,1797年闰六月,1800年闰四月,1803年闰二月,1805年闰七月1808年闰五月,1811年闰三月,1814年闰二月,1816年闰六月,1819年闰四月1822年闰三月,1824年闰七月,1827年闰五月,1830年闰四月,1832年闰九月1835年闰六月,1838年闰四月,1841年闰三月,1843年闰七月,1846年闰五月1849年闰四月,1851年闰八月,1854年闰七月,1857年闰五月,1860年闰三月1862年闰八月,1865年闰五月,1868年闰四月,1870年闰十月,1873年闰六月1876年闰五月,1879年闰三月,1881年闰七月,1884年闰五月,1887年闰四月1890年闰二月,1892年闰六月,1895年闰五月,1898年闰三月,1900年闰八月1903年闰五月,1906年闰四月,1909年闰二月,1911年闰六月,1914年闰五月1917年闰二月,1919年闰七月,1922年闰五月,1925年闰四月,1928年闰二月1930年闰六月,1933年闰五月,1936年闰三月,1938年闰七月,1941年闰六月1944年闰四月,1947年闰二月,1949年闰七月,1952年闰五月,1955年闰三月1957年闰八月,1960年闰六月,1963年闰四月,1966年闰三月,1968年闰七月1971年闰五月,1974年闰四月,1976年闰八月,1979年闰六月,1982年闰四月1984年闰十月,1987年闰六月,1990年闰五月,1993年闰三月,1995年闰八月1998年闰五月,2001年闰四月,2004年闰二月,2006年闰七月,2009年闰五月2012年闰四月,2014年闰九月,2017年闰六月,2020年闰四月,2023年闰二月

农历大小月的算法

农历每月的大小确定方法 农历年各年的每个月的天数是不固定的,月大每月30天,月小每个月29天,要是遇到闰年的话,还得多出一个月,这个多出来的月也是有大小之分的,那么农历每个月有多少天是怎么确定的呢?有个简单的方法:要知道某年开始数起的第九年各月的天数(各月的大小),我们可以查询今年各月初一那天的干支(天干地支),按照“大月天干进四,地支进八;小月天干进三,地支进七”的方法即可推算出某年开始数起的第九年各月初一那一天的干支,然后再计算每月的后面那个月初一那天的干支编号与该月的初一那天的干支编号之差的绝对值,如果此值大月30则计算结果应为60减去此值的差。 例如:如果我们想知道农历2012年各月的大小。我们先从2004年的历书中查到各月初一那天的干支及其大小:正月小,庚子;二月大,己巳;闰二月小,己亥;三月大,戊辰;四月大,戊戌;五月小,戊辰;六月大,丁酉;七月小,丁卯;八月大,丙申;九月小,丙寅;十月大,己未;冬月小,乙丑;腊月大,甲午。那么按照下图所示的编号再结合即可立即推算出2012年各月初一那天的干支(注意:如果推算出的天干编号超过10,则使用算出的编号数减去10;如果推算出的地支编号超过12,则计算结果应为算出的编号减去12)分别为:第一月,癸未;第二月,癸丑;第三月,壬午;第四月,壬子;第五月,壬午;第六月,辛亥;第七月,辛巳;第八月,庚戌;第九月,庚辰;第十月,己酉;第十一月,癸卯;第十二月,戊申;第十三月,戊寅。呵呵,赶紧查下2012年的历书是不是有十三个月并且从正月到腊月每月的初一日的干支都与推算出的完全相符呢? 天干编号表 地址编号表

这样再从60甲子表(把60甲子按顺序从甲子为1开始编号)中查出推算出的每月初一日的干支即可算出每月的天数,从而确定每个月的大小了:根据查表并计算得知2012各月的天数分别为:|(50-20)|=30;60-|(50-19)|=29; |(49-19)|=30;|(19-49)|=30;|(48-19)|=29等,不过这样只能算出12个月的天数,最后一个月的天数还要根据相同的方法推算出2013年正月初一的干支,才能确定。 干支编号表

闰月

闰月指的是阴历中的一种现象,阴历是按照月亮的圆缺即朔望月安排大月和小月,一个朔望月的长度是29.5306日,是月相盈亏的周期, 目录 1基本介绍 2历史出处 3历史发展 4闰月列表 5相关介绍 阴阳历以朔望月的长度(29.5306日)为一个月的平均值,全年12个月,同回归年(365.2422日)相差约10日21时,故需要置闰,三年闰一个月,五年闰二个月,十九年 闰七个月。 闰月加在某月之后叫“闰某月”,如已经过去的2009年农历闰月为己丑年闰五月(2009年6月23日——2009年7月21日),2012年农历闰月为的壬辰年闰四月(2012年5月21日——2012年6月18日)等。 2历史出处编辑本段 《书·尧典》:“以闰月定四时,成岁。” 孔传:“一岁有馀十二日,未盈三岁足得一月,则置闰焉。” 《左传·文公六年》:“闰月不告朔,非礼也。闰以正时,时以作事,事以厚生,生民之道,于是乎在矣。不告闰朔,弃时政也,何以为民?” 3历史发展编辑本段 如果不注意,大概很多人认为“闰月”与“闰年”是一个意思,其实不然,虽说只是一字之差,所包含的意思却相差很远。 “闰年”。我们通常所说的一年365天,其实是个约数,准确的数字应是365.2422日。那么一年365天,就与实际的一年相差0.2422日,这样四年之后就比实际的一年少了近一天。为了弥补这个差值,历法中规定,4年设一闰,即能被4整除的年份为闰年,另附加规定,凡遇世纪年(末尾数字为两个零的年份),必然被400所整除才算闰年,其它的整百年不是闰年,即“百年不闰”。如1996年即闰年,2000年也是闰年,而1700年则不是闰年。阳历闰年的二月有29天,2月29日为闰日,阳历闰年有366天。也就是说阳历闰年的二月不叫闰二月,闰月为农历所特有。 现在再来说“闰月”。闰月指的是阴历中的一种现象,阴历是按照月亮的圆缺即朔望月安排大月和小月,一个朔望月的长度是29.5306日,是月相盈亏的周期,阴历规定,大月30

农历闰月

公元1949 --- 2020 年农历闰月表 1949 闰七月 1952 闰五月 1955 闰三月 1957 闰八月 1960 闰六月 1963 闰四月 1966 闰三月 1968 闰七月 1971 闰五月 1974 闰四月 1976 闰八月 1979 闰六月 1982 闰四月 1984 闰十月 1987 闰六月 1990 闰五月 1993 闰三月 1995 闰八月 1998 闰五月 2001 闰四月 2004 闰二月 2006 闰七月 2009 闰五月 2012 闰四月 2014 闰九月 2017 闰六月 2020 闰四月 从上表可知,闰四,五,六月特别多,闰九,十月特别少,尤其是没有闰十一,十二月和正月。这是为什么呢?原来,两个中气间的时间间隔并不是都一样的。前面提到的30.4368 日只是个平均数。实际上,地球绕太阳运动的轨道是个椭圆,太阳位于椭圆的一个焦点上。轨道上离太阳最远的一点叫做“远日点”,最近的一点叫做“近日点”。地球在远日点附近运动慢,两个中气的时间间隔就长,最长的达到31.45日,因此不含中气的可能多,闰月出现的机会就多些。反之,在近日点附近地球运动快,两中气间的时间间隔就短,最短的只有29天多,因此不含中气的机会少,闰月出现的机会也就少了。这样,我们对正月或腊月(也包括农历十一月)不设置闰月就不会感到奇怪。如若闰月要放在正月或腊月,那我们岂不是可以过两个春节或两个除夕了吗?其实这种历法在清代前曾经有过,但后来由于注历方法的改变,就再也没有这种巧合的事了。正月与腊月在短时间内是不会出现闰月的。 1800-2111年(311年)农历闰月表 年份闰月年份闰月年份闰月年份闰月年份闰月年份闰月年份闰月 1803 二月 1805 六月 1808 五月 1811 三月 1814 二月 1816 二月 1819 四月 1822 三月 1824 七月 1827 五月 1830 八月 1832 九月 1835 六月 1838 四月 1841 三月 1843 七月 1846 五月 1849 四月 1851 八月 1854 七月 1857 五月 1960 三月 1862 八月 1865 五月 1868 四月 1870 十月 1873 六月 1876 五月 1879 三月 1881 七月 1884 五月 1887 四月 1890 二月 1892 六月 1895 五月 1898 三月 1900 八月 1903 五月 1906 四月 1909 二月 1911 六月 1914 五月 1917 二月 1919 七月 1922 五月 1925 四月 1928 二月 1930 六月 1933 五月 1936 三月 1938 七月 1941 六月 1944 六月 1946 二月 1949 七月 1952 五月 1955 三月 1957 三月 1960 六月 1963 四月 1966 三月 1968 七月 1971 五月 1974 四月 1976 八月 1979 六月 1982 四月 1984 十月 1987 六月 1990 五月 1993 三月 1995 八月 1998 五月 2001 四月 2006 七月 2009 五月 2012 四月 2014 九月 2017 六月 2020 四月 2023 二月 2025 六月 2028 五月 2031 三月 2033 七月 2036 六月 2039 五月 2042 二月 2044 七月 2047 五月 2050 二月 2052 八月 2055 六月 2058 四月 2061 三月 2063 七月 2066 五月 2069 四月 2071 八月 2074 六月 2077 四月 2080 三月 2082 七月 2085 五月 2069 四月 2090 八月 2093 六月 2096 四月 2099 二月 2103 六月 2107 三月 2111 二月

不用万年历,速推日干支口诀4种方法

流星赶月排日柱口诀1 推算日干支,可以按公历和农历两种方法推算。 ⑴农历日干支推算口诀: 大小月卦记心间,正一干支起根源。 大后干同地支冲,小后干支退一天。 初一十三二十五,支同隔干一位算。 推算方法:“大小月卦记心间,正一干支起根源。”农历的大月为30天小月为29天,固定不变。要推农历曰干支,先要按《农历大小月卦口诀》将推算之年编上两卦,以便在推算日千支时运。除此之外,还要记住农历正月初一日的干支,因为它是推算一年逐日的基础。“大后干同地支冲,小后干支退一天。”农历天干与地支组合,天干循环2.5次。根据这一规律,知道某月初一日干支,如果这个月是小月则应在干同支冲的情况下,干支各减一位,则是小月后下月初一日干支。如本月初一干支为己卯,这个月是大月,下月初一干支为己酉。如果这个月是小月,则下月初一干支应在己酉退一位后确定,即为戊申日。“初一十三二十五,支同干隔一位算。”此两句是在确定某月初一干支后,将这个月分成三个阶段,即初一至十二,十三至二十四二十五以后。初一、十三、二十五日在干支上也是有规律的。知道初一干支,只要将该日天干隔一位顺推,而地支不变。同理,知道十三日干支,支同干隔一位,也知道二十五日的干支。如初一日干支为甲子,则十三日干支为丙子,二十五日干支为戊子。掌握这个方法,就可以根据所推之日属于哪一段,便可以很快知道这天的干支了。 ⑵公历日干支推算口诀: 元旦干支为根源,大小二月记心间。 小月干同地支冲,大月上句加一天。

申子辰年年为闰,干同支冲退一天。 余年二月二十八,干同支冲退一天。 月首十三二十五,支同隔干一位算。 推算方法:“元旦干支为根源,大小二月记心间。”推算公历日干支,首先要记住元旦曰的干支。同时,还要知道大小月及二月的天数。公历大月为31天,小月为30天,其大小月是固定不变的,唯独二月有29天和28天之分。因此,要特别注意哪年二月为29天,那年二月为28天。“小月干同地支冲,大月上句加一天。”公历小月为30天,按农历大月推算口诀,我们知道本月初一日干支,与下月初一干支则是天干相同地支相冲。公历大月为31天,在小月干地相冲的基础上,干支各加一位数,即是大月后下月一日的干支。“申子辰年年为闰,干同支冲退一天。”经过研究,发现凡地支为申、子、辰的年为公历闰年,二月为29天。在推算3月1日干支时,可按农历小月后的日干支推算方法,即在干同地干冲的基础上,干支各减一位,则为3月丨日干支。“余年二月二十八,干同干冲退二天。”除地干为申子辰年二月29天,其它年二月均为28天。在知道2月1日干支后,按干同支冲规律,干支各减二位便是3月1日的干支。“月首十三二十五,支同隔干一位算。”月首,代表每月第1日。其推法与农历日干干诀后两句相同。 盲人<<快速查日法>>秘决2 第一节快速查日法 盲人秘传手指快速起日法用这个方法来查日子的干支和 节气,首先要知道节气运行的规律和每年正月初一的日子干 支,每年立春的日子时辰,每年的大小月及闰月。 一、节气的规律歌诀:

中国日历(公历+农历)算法

中国公历算法 中国公历算法不是太难,关键是星期值的确定。这里给出了简单算法: public static int dayOfWeek(int y, int m, int d) { int w = 1; // 公历一年一月一日是星期一,所以起始值为星期日 y = (y-1)%400 + 1; // 公历星期值分部 400 年循环一次 int ly = (y-1)/4; // 闰年次数 ly = ly - (y-1)/100; ly = ly + (y-1)/400; int ry = y - 1 - ly; // 常年次数 w = w + ry; // 常年星期值增一 w = w + 2*ly; // 闰年星期值增二 w = w + dayOfYear(y,m,d); w = (w-1)%7 + 1; return w; } 中国农历算法 根公历相比,中国农历的算法相当复杂。我在网上找的算法之中,https://www.doczj.com/doc/125120733.html, 的算法是最好的一个。这个算法使用了大量的数据来确定农历月份和节气的分部,它仅实用于公历 1901 年到 2100 年之间的 200 年。

中国农历计算程式 跟据 https://www.doczj.com/doc/125120733.html, 提供的算法,我写了下面这个程式: [HTML] /** * ChineseCalendarGB.java * Copyright (c) 1997-2002 by Dr. Herong Yang. https://www.doczj.com/doc/125120733.html,/ * 中国农历算法 - 实用于公历 1901 年至 2100 年之间的 200 年*/ import java.text.*; import java.util.*; class ChineseCalendarGB { private int gregorianYear; private int gregorianMonth; private int gregorianDate; private boolean isGregorianLeap; private int dayOfYear; private int dayOfWeek; // 周日一星期的第一天 private int chineseYear; private int chineseMonth; // 负数表示闰月 private int chineseDate; private int sectionalTerm; private int principleTerm; private static char[] daysInGregorianMonth =

公历闰年的精确计算方法

1. 阳历中有闰日的年份叫闰年,相反就是平年,平年为365 天,闰年为366 天。 在公历(格里历)纪年中,平年的二月为28天,闰年的二月为29 天。闰年平月 2 月29 日为闰日。 2. 闰年的计算方法:公历纪年法中:能被 4 整除的大多是闰年;能被100 整除而不能被400 整除的年份不是闰年;能被3200整除的也不是闰年;如1900 年是平年,2000年是闰年,3200 年不是闰年。 3. 中国农历的闰年:中国旧历农历纪年中,有闰月的一年称为闰年。一般年份为12个月,354或355天,闰年则为13 个月,383或384 天。 4. 闰年遵循的规律:四年一闰,百年不闰,四百年再闰。 中国旧历农历每月的天数依照月亏而定,一年的时间以12 个月为基准,平年比一回归年少约11天。为了合上地球围绕太阳运行周期即回归年,每隔2 到 4 年,增加一个月,增加的这个月为闰月。在加有闰月的那一年有13 个月,历 年长度为384或385日,这一年也称为闰年。 原因:地球绕太阳旋转一周实际的时间是365日5小时48分46秒.为了方便,我们把平年按365天计算实际上就少算了5小时48分46秒,四年就相差了23小时15分4秒也就是说4年就少算了近一天.所以每四年就规定了一个闰年把这一天加在闰年的二月以补上少算的时间,也称为“四年一闰”,根据上面的叙述每四年出现一个闰年时时间并不是整整24 小时,所以四年一闰又多算了44 分56秒.按这样计算每一百年就多算了18 小时43分20秒又将近一天,所以到公元整百年时这一年不算闰年以抵消多算的时间称为“百年不闰”。按上面百年不闰的计算每一百年又多出了5小时16分40秒,这样每四百年就多出了21 小时6分40秒,差不多又是一天所以,到公元年份是四百倍数时这一年又是闰年,称为——四百年又闰 这就是“四年一闰、百年不闰、四百年又闰”的道理。按推2000 年是闰年,2100年就不是闰年,同样道理四百年又闰实际上又亏了2小时53分

农历闰年闰月上下1000年表(1645年-2796年)资料

闰月年的九项必知及其计算方法 一、何谓闰月? 1、闰月的来历 如今世界通行的公历,即我们通常所说的阳历,指的是太阳历,是以地球绕太阳公转的运动周期为基础而制定的历法。阳历中有平年闰年之分,平年365天,闰年366天,每四年一闰年。 与太阳相对应,月亮被称为“太阴”,以月亮的运动规律为依据设置的历法,就是“太阴历”,简称“阴历”。阴历在天文学中,以月球绕行地球一周为一月,即以朔望月作为确定历法的基础,一年为十二个历月。一个朔望月的长度是29.5306日,阴历规定,大月30天,小月29天,一年12个月共354天。 这样,阴历的一年与阳历的一年相差11天,只需经过17年,阴阳历日期就同季节发生倒置。这样的历法,会引起人们的生活的混乱。 而中国的古人,沿用的历法是农历,是一种阴阳合历,用闰月的办法解决了这个矛盾。 闰月保证了农历年的正月到三月为春季,四月到六月为夏季,七月到九月为秋季,十月到十二月为冬季,也同时保证了农历岁首在冬末春初(以上均指农历季节)。 2、闰月年的规律 农历就采用了19年加7个闰月的办法,即“十九年七闰法”,把回归年与农历年很好地协调起来,使农历的元旦(中国新年)总保持在冬末春初。古人把235个朔望月称之为“闰周”。 现在置闰的方法是两个冬至之间,如仅有12个月则不置闰,如果有13个月即置闰。置闰的月从“冬至”开始,当出现第一个没有“中气”的月份,这个月就是闰月,其名称是在前个月的前面加一个“闰”字。 3、闰月和闰年不同 “闰月”与“闰年”只是一字之差,意义却相差很远。 “闰年”,我们习惯说一年365天,与一年准确的时间365.2422日之间,相差0.2422日,这样四年之后就比实际的一年少了近一天。为了弥补这个差值,历法中规定,4年设一闰,即能被4整除的年份为闰年。“闰月”,在上面噎有过较为详细的说明,每十九年就会有七个闰月,相当于不到三年就会有一年是闰月年。闰月年的一年有十三个月。显而易见,这与“闰年”是大不同的。 二、各地闰月年的习俗

阳历转化成农历算法

c++中怎样将阳历转化成农历 已关闭20[ 标签:c++, 阳历, 农历 ] 小^鱼、2011-05-03 11:06 推荐答案 一、原理篇 1.公历转换农历的算法 公历(Gregorian Calendar)与农历(Chinese Lunar Calendar)的转换关系不是一个简单的公式就可以完成,其中的转换比较复杂,原因是农历的制定相当复杂,是根据天文观测进行指定的。 比较常用并且比较简单的公历转换农历算法就是查表方法。首先要保存公历农历的转换信息:以任何一年作为起点,把从这一年起若干年的农历信息保存起来(在我的C++类中,是从1900年作为起点的。选择一个起始点的思想十分重要,在下面的干支纪法和二十四节气中也体现到了)。回想一下,我们平时是怎样来转换公历农历的呢?是查阅历书,历书中有每一天的公历农历,直接一查就可以了。那么我们可不可以也这样做呢?当然可以,但是这样做要收录每一天的信息,工作量就会很大,所以我们要简化这些信息。如何简化呢? 要保存一年的信息,其实只要两个信息就可以了:(1)农历每个月的大小;(2)今年是否有闰月,闰几月以及闰月的大小。用一个整数来保存这些信息就足够了。具体的方法是:用一位来表示一个月的大小,大月记为1,小月记为0,这样就用掉了12位,再用低四位来表示闰月的月份,没有闰月记为0。比如说,2000年的信息数据是0x0c960,转化成二进制就是1100100101100000,表示的含义是1、2、5、8、10、11月大,其余月小,低四位为0说明没有闰月。2001年的农历信息数据是0x0d954,其中的4表示该年闰4月,月份大小信息就是0x0d95,具体的就是1、2、4、5、8、10、12月大,其余月小。这样就可以用一个数组来保存这些信息。在我的C++类中是用m_lunarInfo这个数组来保存这些信息的。 下面就是公历转换成农历的具体算法: (1)计算所求时间到起始年正月初一的天数。 (2)从起始年份开始,减去每一月的天数,一直到剩余天数没有下一个月多为止。此时,m_lunarInfo的下标到了多少,就是减去了多少年,用起始年份加上这个下标就可以得到农历年份,然后看减去了几个月。如果本年不闰月或者闰月还在后面,就可以直接得到农历月份,如果在闰月月份数后面一个月,则这个月就是闰月。剩余的天数就是农历日。(具体实现时有所改进。) 2.利于泰勒公式巧算星期 在应用数学中有一个计算某一天是星期几的公式,这就是泰勒公式。公式如下: w = [c÷4] - 2c + y + [y÷4] + [26(m+1)÷10] + d - 1,其中w就是所求日期的星期数。如果求得的数大于(小于)7,就减去(加上)7的倍数,直到余数小于7为止。式子中c是指公

拳头辨别月份大小

课程解读 一、学习目标: 1. 认识时间单位年、月、日,了解它们之间的关系;知道平年、闰年等方面的知识;记住每个月以及平年、闰年各有多少天。 2. 建立年、月、日等时间观念,培养观察、分析和判断推理的能力。 二、重点、难点: 重点:认识时间单位年、月、日,掌握它们之间的相互关系。 难点:计算一年内有多少日。发现并掌握平、闰年的判断方法。 三、考点分析: 1. 认识时间单位年、月、日,了解它们之间的关系; 2. 运用年、月、日之间的关系进行计算。 知识梳理 1. 平年365天,闰年366天,每连续四年中有三个平年,一个闰年。 2. 能被4整除的年份是闰年,反之是平年,末尾有两个或两个以上的0,要先去掉两个0,再除以4,能被4整除的就是闰年,不能被4整除的则是平年。 3. 每年12个月,1、3、5、7、8、10、12月每月31天,是大月;4、6、9、11月每月30天,是小月。2月平年28天,闰年29天。 介绍用拳头记忆大月、小月的方法:举起左手拳头,背向自己,数月份。凸的是大月,凹的是小月。注意八月份要从数一月份的地方数起。 口诀:一、三、五、七、八、十、腊、三十一天永不差。 1年 12个月: 31天:一、三、五、七、八、十、十二大月(7个)

30天:四、六、九、十一小月(4个) 28天、29天:二月特殊月 典型例题 方法应用题: 例1. 2011年3月10日,有一个罪犯逃到了深圳。他拿着一张签发日期是2011年2月29日的边境通行证,在深圳海关准备过境。尽管他经过整容,变了模样,可还是被检查证件的武警一眼识破,将他扣留。同学们知道这是什么原因吗? 思路分析: 1)题意分析:本题查查同学们平年、闰年的知识。 2)解题思路:判断出2011年是平年而非闰年,平年的2月只有28天。 解答过程:2011不能被4整除,因而我们判断2011年是平年。所以2011年的2月根本就没有29日这一天,故该边境通行证是伪造的。 解题后的思考:重点记忆通过计算的方式区分平年、闰年。知道平年、闰年的根本区别在于2月的天数。 例2.下列年份中,哪些是平年,哪些是闰年? 1605 1840 1902 1944 1955 2100 1976 1987 1994 2400 思路分析: 1)题意分析:本题考查通过计算的方式区分平年、闰年 2)解题思路:用以上年份分别除以4,能够被4整除的是闰年,反之是平年;如果年份的末尾有两个或两个以上的零,先去掉两个零,再除以4。 解答过程: 1605不能被4整除,所以1605年是平年; 1840 ÷4=460,1840能够被4整除,所以1840年是闰年; 1902不能被4整除,所以1902年是平年; 1944÷4=486,1944能够被4整除,所以1944年是闰年; 1955不能被4整除,所以1955年是平年; 2100先去掉两个0,是21,21不能被4整除,所以2100年是平年; 1976÷4=494,1976能够被4整除,所以1976年是闰年; 1987不能被4整除,所以1987年是平年; 1994不能被4整除,所以1994年是平年; 2400先去掉两个0,是24,24÷4=6,24能够被4整除,所以2400年是闰年。 解题后的思考:最重要的是同学们要注意末尾有两个或两个以上的0的年份,要先去掉两个0,再除以4,能够被4整除的就是闰年,不能被4整除的则是平年。 例3.填空。 (1)8月1日的前一天是()月()日。 (2)6月30日的后一天是()月()日。 (3)一年中小星在外婆家连续住了62天,正好是两个月,这两个月是()月和()月。

相关主题
文本预览
相关文档 最新文档