阳历转阴历算法(怎么样用公历推算农历)_干支_农历_节气

本文目录

  • 怎么样用公历推算农历
  • c++中怎样将阳历转化成农历
  • 高分悬赏--阳历日期转换成阴历日期的算法
  • 农历的算法是怎么算的
  • 阴历与阳历是怎么换算的
  • 农历和阳历转换有什么规律啊

怎么样用公历推算农历

《银盘子》的秘密
万年历是一种将公历、农历、干支历相互对应,编排在一起的历学工具书。查用万年历,主要是使用年历中的干支纪时。
干支纪时是我国独创的历史最悠久的历法。它以天象为依据,符合物候特点,体现了五行旺衰。在诸多学科中,有着其它历法不可替代的作用。干支纪时,在中医、气功、周易数术、农作、历法等领域中:有着特殊的实用价值。每当需用干支纪时,而需用者手中没有万年历的时候,往往束手无策。
,只需记住十四字的歌诀,一年中的干支纪时就可迅速算出。这种快速心算万年历的方法,叫“银盘子”,“银盘子”是民间术士创造的万年历速算法,历史悠久,以往采用师徒间口授方法传授,严禁外传,我们在此将“银盘子”合盘端出,公诸於世,以进一步探讨揭秘。
“银盘子”是以农历为基础,推算干支纪时的方法。
农历有大月、小月之分,大月30天,小月29天。如果不考虑小月因素,农历两个月60天,与一个甲子六十组干支数目相符,即每两个月可重合一个甲子。按照这样一个规律,知道了某年的正月初一的日干支,就等于知道了三月初一,五月初一,七月初一,九月初一,十一月初一的日干支,这几个月的初一的日干支,应是相同的(有闰月者,月分稍有变化)因为农历中存在小月,只要知道某年有几个小月,其分别为哪几个月,所推日期经历了几个小月,干支纪日顺延几天就是了,这样心算干支纪日就变得十分简单了。
心算万年历,必须了解以下四个要点:。 (1)该年岁次;(2)正月初一的日干支;(3)立春的日、时;(4)当年几个小月,分别为哪几个月。
“银盘子”仅用了十四个字的歌诀,便将以上四个问题圆满地解决了。“银盘子”的创造者,为了保守秘密,在编制口诀时,采用了“加密术”,即对同一地支,往往采用多种称谓。这样做,一是提供了多一些的音韵,使编出的歌诀押韵。而更主要的是为这种心算法采取了“加密”。同一地支众多称谓,变换使用,即便外人听到也不得其解。
“银盘子”不但对地支称谓进行了加密处理,为了便于记忆,控制歌诀字数,还设置了一些相关月份的简称。月时,可称“金蝉”。另外遇到闰月,分别以前、后、双表示。如后五,指闰五月,前三,指前三月,双七指前、后两个七月。
发现节气与农历月之间,有一定规律可以进行修正,只要加上相应的修正值,从立春节即可推算全年任何一个节气的交节日期。大部分节气不差一个时辰。个别节气在推算中会有几个时辰的误差,但用心算法达到这样的精度,已经完全可以满足实用要求了。古人曾规定了一个修正数,不甚精确,笔者经过慎密演算,重新确定了修正值,歌诀是:
立春时刻起根源,
惊蛰倒退时辰三,
要知清明三月节,
不用加减做龙坛。
加八时辰是立夏,
二日退一芒种天,
三日四时为小暑,
五天秋到衣食干。
五日十时交白露,
六日五时寒露天,
六日七时立冬节,
六日四时大雪连。
五日九时交小寒,
推算不会差半天。
以上是从立春节时间起计算不同节气,需要加上有不同时间修正值。了解了由立春起,推算十二节气时修正值,再根据“银盘于”歌,即可算出一年中的任何一个节气的交节时间,知道了交节时间,就能确定干支纪月的起始。
试以1957年为例,推算立冬时间,确定干支纪月。
“银盘子”歌诀曰:“丁酉癸卯初五蛇,木局后刀四申丑上查”。“银盘子”所表达的意思为:1957年岁次丁酉,正月初一的日干支是癸卯,正月初五巳时立春。十月、二月、六月、闰八月、四月、七月、腊月为小月,该年闰八月。
立冬节为十月节,因该年闰八月,所以立冬节在阴历九月中,该年正月初五立春,设九个月后的初五(即九月初五)立冬。立冬前经历了五个小月(小月29日,干支月约30日),先补上五日,再加上修正值六日七个时辰,即为立冬时间。
立冬日期为:九月初五巳时+(五日) +(六日七个时辰)=九月十七日子。
根据“五虎遁”规定,干支月为辛亥月。再以1938年为例,推算芒种节时间,确定干支纪月。
“银盘于”歌诀曰:“戊寅癸亥初五戌,印酉龙羊闰前七”。
“银盘子”所表达的意思为:1938年岁,次戊寅,正月初一日干支为癸亥,该年正月初五戌时立春。该年四月、八月、三月、六月、前七月、十一月为小月,是年闰七月。
芒种节为五月节。芒种经历了三月、四月两个小月,修正值为二日退一时辰。正月初五立春,设五月初五为芒种节。芒种节交节时间为:五月初五戌时+(两日)+(两日-1时辰)=五月初九酉时。根据“五虎遁”规定:干支月为戊午月。
“银盘子”是中国先人在社会实践中创造出来的心算万年历法。只要将六十甲子热练掌握,用心记住十四个字,即可推算出一年之历法。记住数百个字(几十个歌诀)就可推算数十年的历法.可以说学会此法,即胸有历书,很有实用价值。现在我们大力提倡学术交流’,不搞门户之见,完全可以去掉“银盘子”的加密做法,重新编制歌诀,使之更简明、易记,让更多的人掌握心算万年历法,使这种隐匿在民间的秘术服务于社会。
注;本文银盘子古歌诀由山东肥城栾昌明老先生提供。
速算干支年历歌诀新编
(1941—2000)
41. 辛巳乙亥初九马 前六金蝉龙猴打
42. 壬午黄猪十九鸡 二五九月十一七
43. 癸未甲午当日鼠 正三八十腊月五
44. 甲申戊子十二卯 前四二五猴猪咬
45. 乙酉癸丑廿二午 正二四五猴与鼠
46. 丙戌丁未初三鸡 二三五六八鼠息
47. 丁女辛丑十四夜 后二三五六八亥
48. 戊子乙丑廿六卯 玉兰七九子上找
49. 已丑黄羊初七马 二五九鼠七月俩
50. 庚寅癸未十八酉 正四七八猪与牛
51. 辛卯丁丑廿八夜 二五七九与子月
52. 壬辰黑猴初十虎 正三六九子前五
53. 癸巳丙申廿一蛇 正三四七十腊查
54. 甲午庚寅初二申 二四五七十月真
55. 乙未青鸡十二亥 火局前三七蛇在
56. 丙申己酉廿四虎 正三五六八与猪
57. 丁酉癸卯初五蛇 玉兰后八七十腊
58. 戊戌丙寅十六申 四六七九子月真
59. 己亥辛酉廿七猪 正四六月金蝉出
60. 庚子乙卯初九虎 二四后六金蝉舞
61. 辛丑己卯十九蛇 二四六九子鼠爬
62. 壬寅甲戌三十申 正三四六九腊真
63. 癸卯戊辰十一亥 玉兰后四鸡牛在
64. 甲辰黑龙廿二虎 二四七九再加五
65. 乙巳丁亥初三辰 正月五八季月临
66. 丙午庚辰十五羊 后三五八九牛羊
67. 丁未青龙廿五狗 三六七九子上走
68. 戊申己亥初七丑 正三六子后七九
69. 已酉癸亥十八辰 金蝉三五还有寅
70. 庚戌丁巳廿八未 二三五八子月对
71. 辛女壬子初九戌 水局正四后五居
72. 壬子红鼠廿一卯 正三四六八子小
73. 癸丑庚午初二辰 二四五七八子真
74. 甲寅甲子十三羊 后四五八水局长
75. 乙卯戊子廿四酉 三五六八十一九
76. 丙辰壬午初六鼠 五九后八水局主
77. 丁巳丙午十七卯 二五七九子丑找
78. 戊午庚子廿七马 二五八十腊月查
79. 已未木羊初八酉(闰六) 二三五七十与丑
80. 庚申己未十九鼠 二月三月七十五
81. 辛酉甲寅三十兔 正三四六猴与猪
82. 壬戌戊申十一马 玉兰后四七九查
83. 癸亥壬申廿二酉 二四五七亥猪走
84. 甲子丙寅初三夜 二五六八九后十
85. 乙丑庚寅一五卯 正四六八狗鼠跑
86. 丙寅甲申廿六午 正四七九牛与鼠
87. 丁卯戊寅初七猴 二四后六九子丑
88. 戊辰壬寅十七亥 九月玉兰丑牛在
89. 已巳丁酉廿八寅 二三五七九月真
90. 庚午壬辰初九蛇 正三四六后五八
91. 辛未丙辰二十.申 正三四六七九真
92. 壬申庚戌当日亥 正四五七鸡猪来
93. 癸酉甲辰十三虎 金蝉后三正七五
94. 甲戌丁卯廿四蛇 四六八九子月查
95. 乙亥壬戌初五猴 正四子六后八九
96. 丙子红狗十六亥 正三六八鼠牛在
97. 丁丑庚辰廿七虎 二四六九丑牛犊
98. 戊寅乙亥初八辰 二三双五鸡鼠奔
99. 己卯黄猪十九未 二三五六八丑对
2000 庚辰癸巳廿九狗 三四六七九牛走

c++中怎样将阳历转化成农历

一、 原理篇
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 = 表示对于括号中的数字取整。还有一个特别要注意的地方:所求的月份如果是1月或2月,则应视为上一年的13月或14月,也就是公式中m的取值范围是从3到14而不是从1到12。
3. 干支纪法
  天干有十个,就是甲、乙、丙、丁、戊、己、庚、辛、壬、癸,地支有十二个,依次是子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥。古人把它们按照一定的顺序而不重复地搭配起来,从甲子到癸亥共六十对,叫做六十甲子。我国古人用这六十对干支来表示年、月、日、时的序号,周而复始,不断循环,这就是干支纪法。
0甲子
1乙丑
2丙寅
3丁卯
4戊辰
5己已
6庚午
7辛未
8壬申
9癸酉10甲戌
11乙亥
12丙子
13丁丑
14戊寅
15己卯
16庚辰
17辛已
18壬午
19癸未20甲申
21乙酉
22丙戌
23丁亥
24戊子
25己丑
26庚寅
27辛卯
28壬辰
29癸已30甲午
31乙未
32丙申
33丁酉
34戊戌
35已亥
36庚子
37辛丑
38壬寅
39癸卯40甲辰
41乙已
42丙午
43丁未
44戊申
45己酉
46庚戌
47辛亥
48壬子
49癸丑50甲寅
51乙卯
52丙辰
53丁已
54戊午
55己未
56庚申
57辛酉
58壬戌
59癸亥  得到年、月、日的干支表示原理是相同的,即所求的年、月、日到起始年、月、日所经历的年数、月数、天数,加上起始年、月、日干支表示在上表中的序号,与10取模得到天干的序号,与12取模得到地支的序号。以年为例,1900年立春后为庚子年,查上表可知,庚子年为六十甲子的第36位,所以所求年份m_year到1900年的年数为m_year-1900+36-1(如果月份m_month小于等于2月)或m_year-1900+36(如果月份m_month大于2月)。同理,可以得到月、日的干支表示。最后,还要依据节气(立春)调整二月份的干支纪年;依据每月的第一个节气的日期调整月的干支表示,具体情况源程序中有详细的说明。
  古人根据太阳升起的时间, 将一昼夜区分为十二个时辰,用十二地支为代号。如果用m_hour表示公历现在的小时数(二十四表示法),则(m_hour+1)/2就得到时间的地支表示(其实是地支的序号)。
4. 二十四节气
  节气就实质而言是属于阳历范畴,从天文学意义来讲,二十四节气是根据地球绕太阳运行的轨道(黄道)360度,以春分点为0点,分为二十四等分点,两等分点相隔15度,每个等分点设有专名,含有气候变化、物候特点、农作物生长情况等意义。二十四节气即立春、雨水、惊蜇、春分、清明、谷雨、立夏、小满、芒种、夏至、小暑、大暑、立秋、处暑、白露、秋分、寒露、霜降、立冬、小雪、大雪、冬至、小寒、大寒。以上依次顺属,逢单的均为“节气“,通常简称为“节“,逢双的则为“中气“,简称为“气“,合称为“节气“。现在一般统称为二十四节气。
  自古节气的推算是由一年平分24等分所得的平节气。旧历用平气法推算二十四气,此法将一回归年均分成二十四等分,从冬至开始等间隔地依次相间安排各个节气及中气,而各气之间太阳所运行的度数因此并不相等。新历推算则用定气法,此法将黄道上的周天度数等分成二十四份,太阳移至某一分点时,即定为某一节气的日期,由于太阳的视运动迟速不均,因此各节气间相隔的时间亦不等。但不论新历或旧历,均取冬至为二十四气之首,故在春、秋分时彼此的差别最大。为何中国传统历家早知推算定气,却又习用平气注历?此主要或由于平气易于计算所致,因在此法之下,各节气与节气间或中气与中气间相隔固定为三十日五时辰又二刻。
  本C++类中实现二十四节气的计算,使用的是平节气的简单算法。用数组sTermInfo记录从小寒开始的各个节气相对于小寒所经历的分钟数,并用int sTerm(int y, int n)函数得到某年y的第n个节气为所在月的第几日(n从0小寒起算)。由于没有考虑岁差与章动,所以精确度不是很高。

高分悬赏--阳历日期转换成阴历日期的算法

《script type=“text/javascript“》
var CalendarData=new Array(20);
var madd=new Array(12);
var TheDate=new Date();
var tgString=“甲乙丙丁戊己庚辛壬癸“;
var dzString=“子丑寅卯辰巳午未申酉戌亥“;
var numString=“一二三四五六七八九十“;
var monString=“正二三四五六七八九十冬腊“;
var weekString=“日一二三四五六“;
var sx=“鼠牛虎兔龙蛇马羊猴鸡狗猪“;
var cYear;
var cMonth;
var cDay;
var cHour;
var cDateString;
var DateString;
var Browser=navigator.appName;
function init()
{
CalendarData=0x41A95;
CalendarData=0xD4A;
CalendarData=0xDA5;
CalendarData=0x20B55;
CalendarData=0x56A;
CalendarData=0x7155B;
CalendarData=0x25D;
CalendarData=0x92D;
CalendarData=0x5192B;
CalendarData=0xA95;
CalendarData=0xB4A;
CalendarData=0x416AA;
CalendarData=0xAD5;
CalendarData=0x90AB5;
CalendarData=0x4BA;
CalendarData=0xA5B;
CalendarData=0x60A57;
CalendarData=0x52B;
CalendarData=0xA93;
CalendarData=0x40E95;
madd=0;
madd=31;
madd=59;
madd=90;
madd=120;
madd=151;
madd=181;
madd=212;
madd=243;
madd=273;
madd=304;
madd=334;
}
function GetBit(m,n)
{
return (m》》n)&1;
}
function e2c()
{
var total,m,n,k;
var isEnd=false;
var tmp=TheDate.getYear();
if (tmp《1900) tmp+=1900;
total=(tmp-2001)*365
+Math.floor((tmp-2001)/4)
+madd
+TheDate.getDate()
-23;
if (TheDate.getYear()%4==0&&TheDate.getMonth()》1)
total++;
for(m=0;;m++)
{
k=(CalendarData《0xfff)?11:12;
for(n=k;n》=0;n--)
{
if(total《=29+GetBit(CalendarData,n))
{
isEnd=true;
break;
}
total=total-29-GetBit(CalendarData,n);
}
if(isEnd)break;
}
cYear=2001 + m;
cMonth=k-n+1;
cDay=total;
if(k==12)
{
if(cMonth==Math.floor(CalendarData/0x10000)+1)
cMonth=1-cMonth;
if(cMonth》Math.floor(CalendarData/0x10000)+1)
cMonth--;
}
cHour=Math.floor((TheDate.getHours()+3)/2);
}
function GetcDateString()
{
var tmp=““;
tmp+=tgString.charAt((cYear-4)%10); //年干
tmp+=dzString.charAt((cYear-4)%12); //年支
tmp+=“年(“;
tmp+=sx.charAt((cYear-4)%12);
tmp+=“)“;
if(cMonth《1)
{
tmp+=“闰“;
tmp+=monString.charAt(-cMonth-1);
}
else
tmp+=monString.charAt(cMonth-1);
tmp+=“月“;
tmp+=(cDay《11)?“初“:((cDay《20)?“十“:((cDay《30)?“廿“:“卅“));
if(cDay%10!=0||cDay==10)
tmp+=numString.charAt((cDay-1)%10);
if(cHour==13)tmp+=“夜“;
tmp+=dzString.charAt((cHour-1)%12);
tmp+=“时“;
cDateString=tmp;
return tmp;
}
function GetDateString()
{
var tmp=““;
var t1=TheDate.getYear();
if (t1《1900)t1+=1900;
tmp+=t1
+“-“
+(TheDate.getMonth()+1)+“-“
+TheDate.getDate()+“ “
+TheDate.getHours()+“:“
+((TheDate.getMinutes()《10)?“0“:““)
+TheDate.getMinutes()
+“ 星期“+weekString.charAt(TheDate.getDay());
DateString=tmp;
return tmp;
}
init();
e2c();
GetDateString();
GetcDateString();
document.write(DateString,“《br》“,cDateString);
《/script》

农历的算法是怎么算的

农历一年为12或13个月,每个月天数依照月亮围绕地球运行周期而定,为29或30天,闰年为13个月,中国农历年平年为353或354天,闰年为384或385天,平均每年约为365.2422天(即地球环绕太阳一周的时间)。

农历基本上以19年为一周期,由于农历一年约为355日,与地球年相差约11日左右,所以每3年要置一闰月,每19年要置7个闰月。有闰月的年份也叫闰年,具体闰哪个月,则要视节气情况灵活而定。如公历的2001年5月27日、1982年5月27日和1963年5月27日这个日子,都是闰四月初五。

闰月加到哪个月,以农历历法规则推断,主要依照与农历的二十四节气相符合来确定。自冬至开始,逢单数为节气,逢双数为中气,如轮到一个月只有节气没有中气,即为上一个月的闰月。 农历的闰月天数与正常月份天数一样,为29或30天。

扩展资料:

农历的优点:

1.农历是定历,它具有天文年历的特性,能很好地和各种天象对应,如它的节气严格对应太阳高度,历日较严格地对应月相,闰月的不发生频率和发生频率对应地球近日点和远日点,其它天象如日出日没, 晨昏蒙影,五星方位,日月食,潮汐等,就连历月也大致对应太阳高度;

2.农历历月的天数只有29日和30日两种,且由定朔日规定,人为因素最小,不易随意改动;

3.岁首有较强的天文学意义,具有阴月阳年的天文学意义;

4.阴阳合历,最体现汉民族天人合一、阴阳和谐的传统文化;

5.干支纪年和十二生肖纪年循环使用;由于它包含节气十分利于四季划分,由于它包含月相,所以也十分反映潮汐,日月食等天象和月亮对气候的影响。

参考资料来源:农历(中国传统历法)-百度百科


阴历与阳历是怎么换算的

阴历与阳历没有绝对的换算公式。由于有闰月的存在干支纪年现在还没有办法准确地用算法表示,现有的一些公式都存在误差。
一个简单的解决办法就是把一段时间建立一个农历公历对应表,类似万年历那种。

农历和阳历转换有什么规律啊

农历与阳历的转换没有规律。遵循的规则不同。

农历每月的第一天叫朔,最后一天叫回。农历十五、十六、十七天叫王,后天叫王。所以,春节的第三十天不是每年的同一天。阴历的基础是“回归年”和“新月”。“回归年”是太阳连续两次通过春分点所需的时间,即365.2422(365天,5小时,48分46秒)。

“新月”是指两个连续的新月或两个满月之间的时间,即29.5306(29天12小时44分3秒)。由于只有354.3672个“新月”,12个“新月”与365.2422个“返年”之间的差异超过10天,并累积为闰月。早在公元前五、六世纪的春秋时期,中国历法就采用了十九年七个闰月的安排。

但中国历法与藏历和韩历不同,后者通常相差一两天。

农历日期是以月亮的圆度和缺度为月计量单位的。它把新月作为第一天,月亮作为第十五天(月亮的第十六天),月亮作为第二十九天(月亮的第三十天)。然而,目前的年表通常用公历的日期来表示。

如果要将公历日期转换为公历日期,可以使用以下两种方法:一种是查找新编译的公历,例如,公历是1984年6月8日则农历是六月十日。

扩展资料:

农历发展简史

从上古的干支纪元到清朝末期启用西历(格里历),历史多次修订历法,中国历史上一共产生超过102部历法,这些历法对中国文化与文明产生过重大影响:

比如干支历(摄提)、夏历、商历(殷历)、周历、西汉太初历、三统历和隋朝的皇极历、唐朝大衍历等,有的历法虽然没有正式使用过,但对养生、医学、思想学术、天文、数学等有所作用。

古人观察到了天象的运动规律,上古时代已采用干支纪元,据明代史学家万民英根据我国古文献明文记载确定干支为天皇氏时发明,在其著作《三命通会》中有详细记载。干支的发明标志着最原始的历法出现,配合数字用来计算年岁。

夏以后,出现多轨制历法,亦即各诸侯和各地部落还有自己的地方历法。秦朝为中国历史上最后一个“以闰月定四时成岁”的历法。秦汉时期闰月放在九月之后,叫做“后九月”。到了汉武帝太初元年,又把闰月安置在一年中不包含中气的月份来作为前一个月的闰月。

汉朝初期开始中国历法出现了大转折,全国统一历法,历法也成为了一门较为独立的科学技术。汉武帝责成邓平、唐都、落下闳等人议造《汉历》,汉武帝元封七年历成。

是年五月改年号为太初(即为太初元年),并颁布实施这套《汉历》,后人以此称呼此历为《太初历》,之后刘歆作《三统历》,这两历的重要特点是年岁合一,一年的整数天数是365天,不再是之前历法的366天。

以“加差法”替代之前的“减差法”以调整时差,年岁周期起始相当固定,用数学计算就能确定闰月。

参考资料来源:百度百科-农历

特别声明

本文仅代表作者观点,不代表本站立场,本站仅提供信息存储服务。

分享:

扫一扫在手机阅读、分享本文