公历和农历转换 公历和农历转换日期
- 游戏前瞻
- 2024-12-26 18:37
- 1
农历转换成公历的计算公式? 因为公历(现在用的是格里历,以前还曾用儒列历)和农历都不是严格按一个公式计算得到的,所以两个历法没有直接的公式。
公历和农历转换 公历和农历转换日期
公历和农历转换 公历和农历转换日期
试图用一个简单的公式,而不利用许多像万年历一样的数据(尽管可以简化),就达到公农历转换的目的,这是不可能的。我们能见到的所有公农历转换的软件,都存有多少不等的一些年份的历法数据。
这些数据之中,最重要的是农历的每月天数。因为农历是阴阳历,阴历部分(按月相编的部分)决定月日,阳历部分(按太阳高度编的部分)就是节气。节气基本上是与公历直接对应的,可以较容易的推算;但月相周期与地球公转的关系相对复杂,一般都需要天文观测数据授时,所以农历每月是大月还是小月没有简单的公式。
至于公历和农历的置闰,倒都有一定的方式推算,并不困难。
如果只是天文数据,其实都还是可以算的――因为天文周期十分稳定,我们只要严格地按天文周期推算就可以了。可是还有更为麻烦的一点,就是公历和农历这些历法,并不是完全严格地按照天文上的实际周期进行的,还有许多人为的因素。最的就是罗马几次修改2、8等月份长短,以及儒列历中因计算不准确而人为地去掉了十天等事。农历也有因为古代天文观测不准确造成的 颁布的历法与天象不吻合的(我们不能苛求古人观测的精度)。所以这两部历法都是与一个时期有关的东西,也就没有一定的规律可循了。
农历转换公历对照表 是公历1945年4月29日 星期日
农历和公历是怎么转换的?(怎么算的?) 你是要口算还是要用笔算?
告诉你,这样子算不靠谱的,根本算不出来,涉及到的转换不是简单的几个公式能得出,相反,它的转换相当复杂。
如果有兴趣编写程序的,我可以提供转换函数库,调用一个函数就可以实现农历与公历的互转了。
目前我已经完美地实现了转换,如果需要,我可以提供。
日期转换为农历日期的算法是什么 excel公历转农历方法一:使用text函数 A列是公历日期,我们在B1单元格输入公式:=TEXT(A1,[$-130000]yyyy年m月&IF(LEN(--TEXT(A1,[$-130000]dd))=1,初,)&d),下拉完成公历转农历。
excel如何农历转换阳历公式 比如今天是2010年9月2日,用以下公式就可以得出农历七月二十四:
虽然在遇到闰月时,显示结果有点强人意,如下图中,2010年2月9日的农历应是十二月二十六,但因为那年有个闰五月,就无辜多出来一个月了。不过总比编代码要快捷多了吧,而且闰月也不是天天有。
如把公式改成:=MID(甲乙丙丁戊己庚辛壬癸,MOD(TEXT(A2,[$-130000]e)-4,10)+1,1)&MID(子丑寅卯辰巳午未申酉戌亥,MOD(TEXT(A2,[$-130000]e)-4,12)+1,1)&年&TEXT(A2,[$-130000][DBNum1]m月)&TEXT(A2,IF(--TEXT(A2,[$-130000]d)=10,初十,IF(--TEXT(A2,[$-130000]d)>10,[$-130000][DBNum1]d,初[$-130000][DBNum1]d))),那就更像农历表示法了,不过因为农历每年开始日期都不一样,所以函数很难达到十分的结果,只能是将就着用。
实现阳历转阴历算法 下面是一个关于VB的农历算法
'日期数据定义方法如下
'前12个字节代表1-12月为大月或是小月,1为大月30天,0为小月29天;
'第13位为闰月的情况,1为大月30天,0为小月29天;
'第14位为闰月的月份,如果不是闰月为0,否则给出月份,10、11、12分别用A、B、C来表示,即使用16进制;
'4位为当年家农历新年-即农历1月1日所在公历的日期,如0131代表1月31日。
Function GetChgDate(ByVal vDate As String, ByVal ChgType As 转换方式) As String
Dim vvdate() As String = Split(vDate, -)
If vvdate(0) > 2011 Or vvdate(0) >
农历与阳历如何计算 阴历阳历转换计算公式
1、阳历日期推算阴历日期的方法:
前已述及阴历日期是以月亮的圆缺为计月单位,其以逢朔为初一,以月望为十五(大月为十六日),以月晦为二十九日(大月为三十日)。
如要知道1984年6月8日是阴历几日?可以利用公式推算阴历日期: 设:公元年数-1977(或1901)=4Q+R
则:阴历日期=14Q+10.6(R+1)+年内日期序数-29.5n (注:式中Q、R、n均为自然数,R>
在EXCEL中怎样把公历转换成农历 Dim WeekName(7), MonthAdd(11), NongliData(99), TianGan(9), DiZhi(11), ShuXiang(11), DayName(30), MonName(12)
Dim curTime, curYear, curMonth, curDay, curWeekday
Dim GongliStr, WeekdayStr, NongliStr, NongliDayStr
Dim i, m, n, k, isEnd, bit, TheDate
Private Sub Form_Load()
'获取当前系统时间
curTime = Now()
'星期名
WeekName(0) =
WeekName(1) = 星期日
WeekName(2) = 星期一
WeekName(3) = 星期二
WeekName(4) = 星期三
WeekName(5) = 星期四
WeekName(6) = 星期五
WeekName(7) = 星期六
'天干名称
TianGan(0) = 甲
TianGan(1) = 乙
TianGan(2) = 丙
TianGan(3) = 丁
TianGan(4) = 戊
TianGan(5) = 己
TianGan(6) = 庚
TianGan(7) = 辛
TianGan(8) = 壬
TianGan(9) = 癸
'地支名称
DiZhi(0) = 子
DiZhi(1) = 丑
DiZhi(2) = 寅
DiZhi(3) = 卯
DiZhi(4) = 辰
DiZhi(5) = 巳
DiZhi(6) = 午
DiZhi(7) = 未
DiZhi(8) = 申
DiZhi(9) = 酉
DiZhi(10) = 戌
DiZhi(11) = 亥
'属相名称
ShuXiang(0) = 鼠
ShuXiang(1) = 牛
ShuXiang(2) = 虎
ShuXiang(3) = 兔
ShuXiang(4) = 龙
ShuXiang(5) = 蛇
ShuXiang(6) = 马
ShuXiang(7) = 羊
ShuXiang(8) = 猴
ShuXiang(9) = 鸡
ShuXiang(10) = &q......>>
如何把农历转成阳历,求算法 int lunarInfo[]={/阴历数据/
0x04bd8,0x04ae0,0x0a570,0x054d5,0x0d260,0x0d950,0x16554,0x056a0,0x09ad0,0x055d2,
0x04ae0,0x0a5b6,0x0a4d0,0x0d,0x1d255,0x0b540,0x0d6a0,0x0ada2,0x095b0,0x14977,
0x04970,0x0a4b0,0x0b4b5,0x06a50,0x06d40,0x1ab54,0x02b60,0x09570,0x052f2,0x04970,
0x06566,0x0d4a0,0x0ea50,0x06e95,0x05ad0,0x02b60,0x186e3,0x092e0,0x1c8d7,0x0c950,
0x0d4a0,0x1d8a6,0x0b550,0x056a0,0x1a5b4,0x025d0,0x092d0,0x0d2b2,0x0a950,0x0b557,
0x06ca0,0x0b550,0x15355,0x04da0,0x0a5d0,0x14573,0x052d0,0x0a9a8,0x0e950,0x06aa0,
0x0aea6,0x0ab50,0x04b60,0x0aae4,0x0a570,0x05260,0x0f263,0x0d950,0x05b57,0x056a0,
0x096d0,0x04dd5,0x04ad0,0x0a4d0,0x0d4d4,0x0d,0x0d558,0x0b540,0x0b5a0,0x195a6,
0x095b0,0x049b0,0x0a974,0x0a4b0,0x0b27a,0x06a50,0x06d40,0x0af46,0x0ab60,0x09570,
0x04af5,0x04970,0x064b0,0x074a3,0x0ea50,0x06b58,0x055c0,0x0ab60,0x096d5,0x092e0,
0x0c960,0x0d954,0x0d4a0,0x0da50,0x07552,0x056a0,0x0abb7,0x025d0,0x092d0,0x0cab5,
0x0a950,0x0b4a0,0x0baa4,0x0ad50,0x055d9,0x04ba0,0x0a5b0,0x15176,0x052b0,0x0a930,
0x07954,0x06aa0,0x0ad50,0x05b52,0x04b60,0x0a6e6,0x0a4e0,0x0d260,0x0ea65,0x0d530,
0x05aa0,0x076a3,0x096d0,0x04bd7,0x04ad0,0x0a4d0,0x1d0b6,0x0d,0x0d520,0x0dd45,
0x0b5a0,0x056d0,0x055b2,0x049b0,0x0a577,0x0a4b0,0x0aa50,0x1b255,0x06d20,0x0ada0};
int solarMonth[]={31,28,31,30,31,30,31,31,30,31,30,31};
---------------------------------------------------------------------------
int lYearDays(int y) {
int i, sum = 348;
for(i=0x8000; i>0x8; i>>=1) sum += (lunarInfo[y-190......>>
每到旧历年行将结束的时候,家家户户都在辞旧迎新。这个时候总会特别关注农历年和公历年如何换算的问题。
我查了一下网络,有一个公式,就是公元年数先减去3,然后再除以10,它的余数就是天干的次序。同样减去3以后,再除以12,它的余数就是地支的次序。
举个例子。1988年是农历的什么年?先把1988-3。得数是1985。再用1985÷10,它的余数是5。这是天干的次序。十个天干,分别是甲乙丙丁戊己庚辛壬癸。第5个就是戊。1985÷12。它的余数也是5。这个5是地支的顺序。十二地支分别是,子丑寅卯辰巳午未申酉戌亥。第5个就是辰。所得到了天干地支两个字连在一起,就是戊辰年,也是龙年。
我接着又提出了一个问题,为什么公元纪年要减去3以后,再除以10或者12呢?原来农历的甲子年,是六十甲子的第1年,换算成公历是1804年,或者1924年,1984年。甲子年是公历哪一年呢?公历的纪年必须被60整除,然后再加上4,的公历年份就相当于农历的甲子年。而反过来推算,公历年换算成农历年就是减去3,因为甲子年本身是第1年。如果计算起来怕麻烦,那么也可以查看对照表。
农历和阳历转换有什么规律啊? 没有。阳历是以地球围绕太阳公转一周的时间(即:365天5小时48分46秒,也就是365.2422天)为一年,为历法方便定为365天(称为平年),舍去0.2骸22天,舍去的0.2422天,每4年累加为0.9688天,将近一天。因此,每四年加一天,既加在能被4整除的年份上,这一年为366天(称为闰年,即:2月份为29天),每四百年少3.12天,也就是少三个闰年,所以逢百年时,既要被4整除也要被400整除才为闰年。也就是我们通常所说的: 四年一闰,百年不闰,四百年再闰。
农历则是以月亮围绕地球公转一周的时间(即:平均29天12小时44分)为一个月,12个月算一年,为354天。每三年有一个闰月年,闰月年是383天或384天。19年7个闰月年。一般情况19年阳历和阴历(19被数年)能碰到一起或只一天。
公历和农历之间如何转换 公历,它是通用的。阳历 以地球绕太阳转一圈的时间定做一年,共3 65天5小时48分46秒。平年只计365天这个 整数,不计尾数;一年分做12个月,大月31 天,小月30天,二月只有28天。四年的尾 数积累起来共1天光景,加在第四年的二月 里,这一年叫做闰年。所以闰年的二月有2 9天。阴历以月亮圆缺一次的时间定做一个 月,共29天半。为了算起来方便,大月定 做30天,小月29天,一年12个月中,大小 月大体上交替排列。阴历一年只有354天左 右,也没有平年闰年的别。 阴历不考虑地球绕太阳的运行,因此使得 四季的变化在阴历上就没有固定的时间, 它不能反映季节,这是一个很大的缺点。 为了克服这个缺点,后来人们定了一个折 衷的历,就是所谓阴阳合历。现在我国还 在使用的夏历(也有人叫它农历或阴历),就 是这种阴阳合历。它跟阴历一样,也以月 亮圆缺一次的时间定做一个月,也是大月3 0天,小月29天,可是它又用加闰月的办法 ,使得平均每年的天数跟阳历全年的天数 相接近,来调整四季。夏历约每过二、三 年多一个闰月。“阴历”又名“太阴历”,系以 月球绕行地球一周为一月,再配合地球绕 日一周之时数为一年,实际上等于阴阳合 历,我国在元年前采用此历,为与现 行之历相对称,故名之曰“旧历”。一般人以 为阴历适合于农家,而名之日“农历”。
农历和公历是怎么转换的?(怎么算的?) 你是要口算还是要用笔算?
告诉你,这样子算不靠谱的,根本算不出来,涉及到的转换不是简单的几个公式能得出,相反,它的转换相当复杂。
如果有兴趣编写程序的,我可以提供转换函数库,调用一个函数就可以实现农历与公历的互转了。
目前我已经完美地实现了转换,如果需要,我可以提供。
农历转换公历对照表 是公历1945年4月29日 星期日
农历转换成公历的计算公式? 因为公历(现在用的是格里历,以前还曾用儒列历)和农历都不是严格按一个公式计算得到的,所以两个历法没有直接的公式。
试图用一个简单的公式,而不利用许多像万年历一样的数据(尽管可以简化),就达到公农历转换的目的,这是不可能的。我们能见到的所有公农历转换的软件,都存有多少不等的一些年份的历法数据。
这些数据之中,最重要的是农历的每月天数。因为农历是阴阳历,阴历部分(按月相编的部分)决定月日,阳历部分(按太阳高度编的部分)就是节气。节气基本上是与公历直接对应的,可以较容易的推算;但月相周期与地球公转的关系相对复杂,一般都需要天文观测数据授时,所以农历每月是大月还是小月没有简单的公式。
至于公历和农历的置闰,倒都有一定的方式推算,并不困难。
如果只是天文数据,其实都还是可以算的――因为天文周期十分稳定,我们只要严格地按天文周期推算就可以了。可是还有更为麻烦的一点,就是公历和农历这些历法,并不是完全严格地按照天文上的实际周期进行的,还有许多人为的因素。最的就是罗马几次修改2、8等月份长短,以及儒列历中因计算不准确而人为地去掉了十天等事。农历也有因为古代天文观测不准确造成的 颁布的历法与天象不吻合的(我们不能苛求古人观测的精度)。所以这两部历法都是与一个时期有关的东西,也就没有一定的规律可循了。
公历农历转换 回历、公历、农历的换算
(128 × 365+31)日÷ 128年= 365.2421875日/年
可见共置闰精度远高于现代的公历。
2.换算中一日误之订正
《历法丛谈》以回历1387年为例,求算合公历之年月日。
解1:1387 × 0.970224+621.5774=1967.278088年
0.278088年 × 365.2422日=101.569日公历累计日数为101.57日可视为4月11日或4月12日。究竟是哪一日,当依两历在公历4月11日或12日间所具有同一的星期序数以订正。
依回历岁首星期序数计算公式:
[(138-1)×131+164] ÷30=6057,余20
6057÷7=865,余 2
故回历1387年元旦为星期2。(表)
按公历自1583年元旦(星期六)至1967年4月11日,共历:
1967-1583=384年,在这384年中依格列高利历四年一闰,百年不闰,四百年加一闰日的规则共历93个闰日,又1967年元旦后一日起至4月11日又需加 100日,则
(384 × 365+93+100+6)÷ 7=140359+7=2001,余 2余2即星期2,故回历1387年元旦在公历1967年4月11日。
因公历计算星期日数采用数据较多,计算时难免有所遗漏,现引人公历日期与星期推算表阿),供参考。
应用此表查找公元1967年4月11日星期序数步骤如下:
先在本表年份表前二位数字栏目中,查到19二字所在的位置;
再在年份表后二位数字栏目中查到67二字所在位置,自19二字处平行右移,67二字处垂直下移,二者在英文大写字母栏目中相交于字母G处;
再自月份表栏目中查到4月,自4月所在位置平行左移,查到G在4月栏目所在位置;
自日期栏目查到11日所在位置,自此位置平行右移,使与4月份栏目G在星期表相交处知为星期二,结果与回历计算所得相同。故知回历 1387年元旦确为公历1967年4月11日,而不是12日。
在换算中所得公历日数常多于31日,甚至常在200―300日或更多,需要将此数化为该年的月日时,可用下列两表。
表3 公历月份及其累计日数
三 公历换算为回历
将回历换算为公历的算式移项,整理,即可得到公历换算为国历的算式
(公历纪年一621.56)÷0.9702=回历年月日(儒略历)……………………………………………(5)
(公历纪年一621.5774)÷0.970224=回历年月日(格氏历)…………………………………………(6)
无论回历换算为公历或相反,大体都有一日之,以星期序数订正时,回历换算为公历,以回历的星期序数为准;相反,以公历的星期序数为准。
四 国历或公历换算为农历
1.回历换算为农历
仅管农历各年在年内月数日数都不是一个相对的稳定值,给回历与公历换算为农历上带来较多的困难,但仍然可以换算。农历为阴阳合历,在月份上与回历同属太阴历,惟回历每月以见新月为一月之始,其日约迟于农历合朔(初一日)1―2日乃至3日,因此只要查清二者在月份上关系,便可将回历换算为农历。马以愚先生称:“......>>
如何将农历转换为公历 是公历11月13日。这日历上有,要问怎么换的,当然公历是固定的,1、3、5、7、8、10、12月都是31天,2月28天(每4年润一次月,像2008年够4整除,润2月29天),其余的都是30天。
对于农历,它实质是阴历,沿用的是太阴历,这是一门很复杂的天文学知识。它包括24节气。
记住阳历是:1、3、5、7、8、10、腊,31天都不,其余都是30天,除了2月28.
若是闰月2月29天,只多一天。
如何在Excel中转换阴历阳历 可以啊,不过比较复杂。参看excelhome:
club.excelhome/dispbbs.asp?BoardID=3&ID=26011&replyID=&skin=0
下载里面的Excel附件。
可能需要注册一下。
Excel 中阳历日期如何转换成阴历日期? 2007版的excel可用下面公式转换:
=TEXT(A1,[$-130000]yyyy年m月&IF(LEN(--TEXT(A1,[$-130000]dd))=1,初,)&d)
阳历和阴历之间是不能换算的,二者采用的计算方法不同,没有特殊关系可以查询,只能分别计算。
太阳历,又称为阳历,是以地球绕太阳公转的运动周期为基础而制定的历法。太阳历的历年近似等于回归年,一年12个月,这个“月”,实际上与朔望月无关。
阳历的月份、日期都与太阳在黄道上的位置较好地符合,根据阳历的日期,在一年中可以明显看出四季寒暖变化的情况;但在每个月份中,看不出月亮的朔、望、两弦。
阴历,传统历法之一,也被称为旧历、汉历、古历等,辛亥革命后改用西方太阳历(公历),而近现代使用的农历属于阴阳合历,也就是阴历和阳历的合历。
阴历,其计算方法是:
以太阴圆缺一周为一月,历时29日12小时44分2.8秒,太阴圆缺十二周为一年,历时354日8小时48分33.6秒。每一年的12个月中,6个单数月份(即1、3、5、7、9、11月)为“大建”,每月为30天。
故平均每年为354日8小时48分。按该历全年实际天数计算,比回归年约少10日21小时1分,积2.7回归年相一月,积32.6回归年相一年。该历对昼夜的计算,以日落为一天之始,到次日日落为一日,通常称为夜行前,即黑夜在前,白昼在后,构成一天。
公历和农历的区别 转换方法是什么
公历和农历的区别是什么?很多人还不是很清楚,下面就和我一起去看一下相关信息吧,希望可以给大家带来帮助。
公历和农历的区别 公历,是以地球绕太阳一周为基本周期。地球绕太阳转一圈的时间定为一年。
农历来源于我们,以月亮圆缺一次的时间为一个月,共29天半。为了算起来方便,大月定做30天,小月29天,一年12月中,大小月大体上交替排列。农历一年有365天左右,也没有平年闰年的别。
公历农历转换的方法 农历,又称夏历、阴历、旧历,是东亚传统历法之一。农历属于一种阴阳历,平均历月等于一个朔望月,但设置闰月以使平均历年为一个回归年,设置二十四节气以反映季节(太阳直射点的运动)的变化特征,所以又有阳历的成分。
至今几乎全世界所有华人及朝鲜、韩国和越南及早期的日本等,仍使用农历来推算传统节日如春节、中秋节、端午节等节日。
平年十二个月,大月三十天,小月二十九天,全年354天或355天(一年中哪个月大,哪个月小,年年不同)。由于每年的天数比太阳年约十一天,所以采用设置闰月的方法使这几年的平均日数尽
农历量的接近365.2422日。因1回归年为12.368个朔望月,368/1000=46/125,所以在一百二十五年中应设置四十六个闰年,但因为这样设闰太过复杂,经推算,7/19最接近0.368,故一般的,在19年里中设置7个闰月,有闰月的年份全年383天或384天。
又根据太阳的位置,把一个太阳年分成二十四个节气,以利于农业种植等活动。纪年用天干地支搭配,六十年周而复始。这种历法相传创始于夏代,所以又称为夏历。也叫旧历。
人们因为二十四节气对于农业生产有重要意义,因而常把夏历称为“农历”,但二十四节气应根据太阳在黄道上的位置而决定,应该属于太阳历部分。因此把夏历称为农历是不恰当的。
公历是阳历吗 公历属于阳历。
太阳历又称为阳历,是以地球绕太阳公转的运动周期为基础而制定的历法。
太阳历的历年近似等于回归年,一年12个月,这个“月”,实际上与朔望月无关。
阳历的月份、日期都与太阳在黄道上的位置较好地符合,根据阳历的日期,在一年中可以明显看出四季寒暖变化的情况;但在每个月份中,看不出月亮的朔、望、两弦。
如今行的公历就是一种阳历,平年365天,闰年366天,每四年一闰,每满百年少闰一次,到第四百年再闰,即每四百年中有97个闰年。公历的历年平均长度与回归年只有26秒之,要累积3300年才一日。
Excel 中阳历日期如何转换成阴历日期? 2007版的excel可用下面公式转换:
=TEXT(A1,[$-130000]yyyy年m月&IF(LEN(--TEXT(A1,[$-130000]dd))=1,初,)&d)
Excel里面农历转公历的函数公式应该是怎么样的呢 单元格输入公式:=TEXT(A1,[$-130000]yyyy年m月&IF(LEN(--TEXT(A1,[$-130000]dd))=1,初,)&d),下拉完成公历转农历。
能帮到你的话希望能采纳一下,谢谢
农历转换公历对照表 是公历1945年4月29日 星期日
如何将农历转换为公历 是公历11月13日。这日历上有,要问怎么换的,当然公历是固定的,1、3、5、7、8、10、12月都是31天,2月28天(每4年润一次月,像2008年够4整除,润2月29天),其余的都是30天。
对于农历,它实质是阴历,沿用的是太阴历,这是一门很复杂的天文学知识。它包括24节气。
记住阳历是:1、3、5、7、8、10、腊,31天都不,其余都是30天,除了2月28.
若是闰月2月29天,只多一天。
农历转换成公历的计算公式? 因为公历(现在用的是格里历,以前还曾用儒列历)和农历都不是严格按一个公式计算得到的,所以两个历法没有直接的公式。
试图用一个简单的公式,而不利用许多像万年历一样的数据(尽管可以简化),就达到公农历转换的目的,这是不可能的。我们能见到的所有公农历转换的软件,都存有多少不等的一些年份的历法数据。
这些数据之中,最重要的是农历的每月天数。因为农历是阴阳历,阴历部分(按月相编的部分)决定月日,阳历部分(按太阳高度编的部分)就是节气。节气基本上是与公历直接对应的,可以较容易的推算;但月相周期与地球公转的关系相对复杂,一般都需要天文观测数据授时,所以农历每月是大月还是小月没有简单的公式。
至于公历和农历的置闰,倒都有一定的方式推算,并不困难。
如果只是天文数据,其实都还是可以算的――因为天文周期十分稳定,我们只要严格地按天文周期推算就可以了。可是还有更为麻烦的一点,就是公历和农历这些历法,并不是完全严格地按照天文上的实际周期进行的,还有许多人为的因素。最的就是罗马几次修改2、8等月份长短,以及儒列历中因计算不准确而人为地去掉了十天等事。农历也有因为古代天文观测不准确造成的 颁布的历法与天象不吻合的(我们不能苛求古人观测的精度)。所以这两部历法都是与一个时期有关的东西,也就没有一定的规律可循了。
公历农历转换 公历,它是通用的。阳历 以地球绕太阳转一圈的时间定做一年,共3 65天5小时48分46秒。平年只计365天这个 整数,不计尾数;一年分做12个月,大月31 天,小月30天,二月只有28天。四年的尾 数积累起来共1天光景,加在第四年的二月 里,这一年叫做闰年。所以闰年的二月有2 9天。阴历以月亮圆缺一次的时间定做一个 月,共29天半。为了算起来方便,大月定 做30天,小月29天,一年12个月中,大小 月大体上交替排列。阴历一年只有354天左 右,也没有平年闰年的别。 阴历不考虑地球绕太阳的运行,因此使得 四季的变化在阴历上就没有固定的时间, 它不能反映季节,这是一个很大的缺点。 为了克服这个缺点,后来人们定了一个折 衷的历,就是所谓阴阳合历。现在我国还 在使用的夏历(也有人叫它农历或阴历),就 是这种阴阳合历。它跟阴历一样,也以月 亮圆缺一次的时间定做一个月,也是大月3 0天,小月29天,可是它又用加闰月的办法 ,使得平均每年的天数跟阳历全年的天数 相接近,来调整四季。夏历约每过二、三 年多一个闰月。“阴历”又名“太阴历”,系以 月球绕行地球一周为一月,再配合地球绕 日一周之时数为一年,实际上等于阴阳合 历,我国在元年前采用此历,为与现 行之历相对称,故名之曰“旧历”。一般人以 为阴历适合于农家,而名之日“农历”。
农历和公历是怎么转换的?(怎么算的?) 你是要口算还是要用笔算?
告诉你,这样子算不靠谱的,根本算不出来,涉及到的转换不是简单的几个公式能得出,相反,它的转换相当复杂。
如果有兴趣编写程序的,我可以提供转换函数库,调用一个函数就可以实现农历与公历的互转了。
目前我已经完美地实现了转换,如果需要,我可以提供。
电子表格中怎样将农历转换为公历 1、农历转换为公历,首先需要一个农历和公历的对照表
2、设对照表的格式为:A列为农历,B列为公历。
3、此时可以用VLOOKUP函数进行转换,公式为:=VLO畅KUP(需要转换的农历日期,A:B,2,0)
4、特别注意:需要转换的农历日期必须与对照表中A列格式一致。
万年历的c语言程序代码包括节日农历,农历转公历,公历农历查询某 / 多格式万年历 1.问题 设计程序实现多规格打印万年历,要求每一横排打印x个月 整数x可取1,2,3,4,6五个选项 2.设计思路 设置两个数组:一维m数组存放月份的天数,如m(8)=31,即8月份为31天 二维d数组存放日号,如d(3,24)=11,即3月份第2个星期的星期4为11号 其中24分解为十位数字2与个位数字4,巧妙地利用二维数组存放了三维信息 输入年号y,m数组数据通过赋值完成。根据历法规定,平年二月份为28天; 若年号能被4整除且不被100整除,或能被400整除,该年为闰年,二月份为29天 则必须把m(2)改为29. 同时,根据历法,设y年元旦是星期w(取值0-6,0为星期日),整数w的计算公式为 w={y+[(y-1)/4]-[(y-1)/100]+[(y-1)/400]}%7 []为取整。 元旦以后 ,每增加一天,w增1,当w=7时改为w=0即可。 设置三重循环i、j、k为d数组的d(i,j10+k)赋值。i:1-12,表示月份号;j:1-60 表示每个月约定最多6个星期;k;0-6,表示星期k。从元旦的a=1开始,每赋一个元素, a增1,同时w=k+1。当w=7时,w=0(为星期日)。当a>m(i)时,终止第i月的赋值作。 输入格式参数x(1,2,3,4,6),设置4重循环控制规格打印: n循环,n:1-12/x,控制打印12/x段(每一段x个月)。、 j循环,j:1-6,控制打印每月的6个星期(6行)。 i循环,i:t--t+x-1,控制打印每行x个月(从第t个月至t+x-1月,t=x(n-1)+1). k循环,k:0-6,控制打印每个星期的7天。 / #include #include void main() { int a,i,j,n,k,t,w,x,y,z; static int d[13][78]; int m[14]={0,31,28,31,30,31,30,31,31,30,31,30,31}; char wst[]=Sun Mon Tue Wed Thu Fri Sat; puts(Please enter the year: ); scanf(%d,&y); if(y%4==0&&y%100!=0||y%400==0)闰年的二月为29天 m[2]=29; w=(y+(y-1)/4-(y-1)/100+(y-1)/400)%7;计算y年元旦为星期w for(i=1;im[i]) break; } if(a>m[i]) break; } } puts......>>
阴历19771030转换阳历是 1977.12.10日,星期六
首先我粘贴的,还有就是算法复杂,如果你的心算能力强就会更快些!
阳历日期推算阴历日期的方法:
阴历日期是以月亮的圆缺为计月单位,其以逢朔为初一,以月望为十五(大月为十六日),以月晦为二十九日(大月为三十日)。然而目前记时通常用阳历日期表达,如欲将阳历日期换算成阴历日期可以用以下两种方法:
其一是查《新编万年历》,如查1984年6月8日是阴历几日?翻开万年历6月10日是阴历十一,则逆推6月8日是阴历初九。
其二可以利用公式推算阴历日期:
设:公元年数-1977(或1901)=4Q+R
则:阴历日期=14Q+10.6(R+1)+年内日期序数-29.5n
(注:式中Q、R、n均为自然数,R<4)
例:1994年5月7日的阴历日期为:
1994-1977=17=4×4+1
故:Q=4,R=1
则:5月7日的阴历日期为:
14×4+10.6(1+1)+(31+28+31+31+7)-29.5n
=204.2- 29.5n
然后用29.5去除204.2得商数6......27.2,6即是n值,余数27即是阴历二十七日。
一、 推算年干支口诀
掌上推算年干支,支子花甲起根源。
阳支都是旬开始,天干为甲尾四年。
隔位逆推十年正,顺推年尾五零三。
逐支加减六十数,掌上推算千万年。
推算方法:“掌上推算年干支,支子花甲起根源。”此法是将地支排列在掌中,手掌上推算年干支的方法。 首先,在掌上将地支定位(图一),然后以地支子位为花甲子的开始,可定为1864,1924,也可定为1984年???,其年都是甲子年。“阳支都是旬开始,天干为甲尾四年。”地支中的子,寅,辰,午,申,戌都是阳支,而且也是每旬的开始,天干都为甲,即甲子,甲戌,甲申,甲午,甲辰,甲寅,这些年的公历尾数均为四。“隔位逆推十年正,顺推年尾五零三。”天干十数,地支十二数,天干与地支组合天干每循环一次,地支总与下二支(旬空)。其中余下的支便是下旬的开始。我们从地支子位开始,隔一位逆推,即从子位逆推隔亥到戌,恰是甲戌旬的开始,再逆推隔一位酉至申为甲申旬开始,------年尾数都为四,年间隔都是十年。在确定旬开始以后,以该年尾数四为起点,从下支开始挨位顺推,其公历年尾数分别是5,6,8,9,0,1,2,3,而后又是下旬的开始。“逐支加减六十数,掌上推算千万年”掌握此法推算,如果将甲子年定为1984年,按口诀可知1994年为甲戌,2004年为甲申,2014年为甲午等。确定每旬开始的公历年数后,可根据需要顺推任何一年的干支,虽意性很大,可推千年万年的干支。
二、推算月、时干支口诀
天干五合前为主,月时干序一至五。
年干隔数配寅月,日干配时本数身。
古往今来,年上起月,日上起时,是按天干五合的方法,分成五种情况,即甲、己之年(日)定月(时)的方法相同------。我们也采用这种方法,并一前一天干为主,即甲、己以甲为主,乙、庚以乙为主,------,配上序数甲为1,乙为2,丙为3,丁为4,戊为5(图二),成为推算月、时的固定序数。“年干隔位配寅月”,推算某年的月干,先看该年干与何干相合,然后按“天干五合前为主”的方法,查出该干的序数,并设此干为零,按序数隔干确定寅月的天干。如98年是戊寅,戊癸干合,戊年与癸年的天干相同,属于同一种定寅月天干法。五的序数尾5 ,从5 开始,隔己、庚、辛、壬、癸五天干到甲,就可以算出98年寅月的天干是甲,其他月的天干就好推算了。“日干配时本身数” ,此句推算方法与年干定寅月天干发基本相同,只是在确定日干合干以后,从合之干的前干本身算起,按序数查,到何干,便是该日子时的天干。如己日,己与甲同一类型,以甲干为主,甲的序数为“1”以本身配子时,该日子时的天干为甲,即甲子时。同样,癸日子时吧的天干,因戊癸合干,以五为主,序数为5,从5开始数到壬,癸日子时为壬子时。
二、 农历大小月卦口诀
一年上下两卦编,一七两月初爻安。
阴大阳小编上卦,遇有闰月年十三。
闰爻相邻爻间伏,确定年月按节算。
推算方法:此诀是为了掌握某年农历大小月的排列顺序和有否闰月而编的。“一年上下两卦编,一、七两月初爻安” ,在 正常情况下,农历每年为十二个月。我们可以将一至六月编为前卦,七至十二月编为后卦,几一年编为两卦,并以一月为前卦的处爻,七月为后卦的初爻。“阴大阳小编上卦,遇有闰月年十三”,我们将大月规定用用阴爻表示,小月用阳爻表示,按大小顺序用阴阳爻将一年编为两卦。遇到有闰月的年份就多出一个月,一年为十三个月。“闰年相邻爻间伏,确定年月按节算”。在出现有闰月的年份时,按闰月大小用阴阳爻表现出来,并标在 闰月的前后两月的爻位中间的左侧,如同伏卦一样,一看便知到闰几月,是大月还是小月。同时,提醒您农历年、的确定,不是按万年历编出的月份确定的,而是按节气确定的。如1998年,按上述方法可编成《井》和《坎》两卦,而今年闰5月为小月,上半年月卦符号为“: 。 : 。 。 : ”,下半年的月卦符号为“ = 丨 = = 丨 = ”,上半年卦第5、6爻间伏一阳爻,可知今年润五月为29天。
四、推算日干支口诀
推算日干支,可以按公历和农历两种方法推算。
⑴ 农历日干支推算口诀:
大小月卦记心间,正一干支起根源。
大后干同地支冲,小后干支退一天。
初一十三二十五,支同隔干一位算。
推算方法:“大小月卦记心间,正一干支起根源。”农历的大月为30天小月为29天,固定不变。要推农历曰干支,先要按《农历大小月卦口诀》将推算之年编上两卦,以便在推算日千支时运。除此之外,还要记住农历正月初一日的干支,因为它是推算一年逐日的基础。“大后干同地支冲,小后干支退一天。”农历天干与地支组合,天干循环2.5次。根据这一规律,知道某月初一日干支,如果这个月是小月则应在干同支冲的情况下,干支各减一位,则是小月后下月初一日干支。如本月初一干支为己卯,这个月是大月,下月初一干支为己酉。如果这个月是小月,则下月初一干支应在己酉退一位后确定,即为戊申日。“初一十三二十五,支同干隔一位算。”此两句是在确定某月初一干支后,将这个月分成三个阶段,即初一至十二,十三至二十四二十五以后。初一、十三、二十五日在干支上也是有规律的。知道初一干支,只要将该日天干隔一位顺推,而地支不变。同理,知道十三日干支,支同干隔一位,也知道二十五日的干支。如初一日干支为甲子,则十三日干支为丙子,二十五日干支为戊子。掌握这个方法,就可以根据所推之日属于哪一段,便可以很快知道这天的干支了。
⑵公历日干支推算口诀:
元旦干支为根源,大小二月记心间。
小月干同地支冲,大月上句加一天。
申子辰年年为闰,干同支冲退一天。
余年二月二十八,干同支冲退一天。
月首十三二十五,支同隔干一位算。
推算方法:“元旦干支为根源,大小二月记心间。”推算公历日干支,首先要记住元旦曰的干支。同时,还要知道大小月及二月的天数。公历大月为31天,小月为30天,其大小月是固定不变的,唯独二月有29天和28天之分。因此,要特别注意哪年二月为29天,那年二月为28天。“小月干同地支冲,大月上句加一天。”公历小月为30天,按农历大月推算口诀,我们知道本月初一日干支,与下月初一干支则是天干相同地支相冲。公历大月为31天,在小月干地相冲的基础上,干支各加一位数,即是大月后下月一日的干支。“申子辰年年为闰,干同支冲退一天。”经过研究,发现凡地支为申、子、辰的年为公历闰年,二月为29天。在推算3月1日干支时,可按农历小月后的日干支推算方法,即在干同地干冲的基础上,干支各减一位,则为3月丨日干支。“余年二月二十八,干同干冲退二天。”除地干为申子辰年二月29天,其它年二月均为28天。在知道2月1日干支后,按干同支冲规律,干支各减二位便是3月1日的干支。“月首十三二十五,支同干隔一位算。”月首,代表每月第1日。其推法与农历日干干诀后两句相同。
五.实例:推算1998年农历6月初10日午时的干支。
⒈先按《农历大小月卦口诀》,将98年农历大小月,排上两卦,并标出闰月。同时,记住正月初一日和元旦日干支。
⒉推算1998年的干支。我们按《推算年干支口诀》在手掌上将地支子位定为甲子,为1984年,并将大拇指按在地支子位上。按“隔位逆推十年正”,大拇指从甲戌94年开始顺推,即94年为甲戌,95年为乙亥,96为丙子,97年为丁丑,98年干支则为戊寅。
⒊推算农历6月份干支。确定1998年戊寅干支以后,按《定月时干支诀》,戊干与癸干合以戊为主,戊的序数为5,将大拇指固定在戊位上。“年干隔位配寅月”,从戊位开始,将大拇指顺数,隔过天干,已,庚,辛,壬、癸五干到甲,便是98年正月的天干,即正月干支为甲寅,再从寅支开始,按甲,己,丙,丁,戊6月干支为己未。
⒋推算6月初10日(公历8月1日)干支。
⑴推算农历日干支。如前所述,98年大小月卦为《井》和《坎》。因为闰5月为29天,为阳爻,伏在《井》卦第5、6爻问,卦形为 =丨= 丨丨= 。
因为要推算的是农历98年正月初一日干支为己亥,先用大拇指在手掌亥支上定位,然后按《农历日干支推算诀》中的“大后干同地支冲,小后干支退一天”的规定,逐月推算初1日的干支。正月为大,干同支冲,大拇指跳到巳位上,2月初1日干支为已巳;干同支冲各减1,大拇指跳到亥位后,再减1位,3月初1日干支为甲戌;3月为小,干同支冲各减1大拇指跳到辰支后退1位,4月初1日为癸卯;4月为大,干同支冲,大姆指跳到酉干,5月初1日为癸酉;5月为小,干同支冲各减1,大拇指跳到卯支再退1位,闰5月 初1日为壬寅。闰5月为小,干同支冲各减1,大拇指跳到申支后再退一位,六月初一干支为辛未。知道6月初1日的干支后,从此位顺推初10曰的干支为庚辰。
⑵、推算公历8月1曰干支。
98年干支为戊寅,年支不属于申子辰,故98年2月为28天。按《曰公历干支推算口诀》中“小月干同地支冲,大月上句加一天------,余年二月二十八,干同支冲退两天”的规律,逐月推算。98年干支戊申,大拇指定在申位上。1月为大,干同支冲加一天,大拇指由申位到跳到寅,加1支到卯,2月1日为己卯,2月28天,干同干冲退二天,大拇指跳到酉位退二支,3月1日为丁未;3为大,干同支冲加1天大拇指跳到丑进一位4月1日干支为戊寅;4月为小,干同干冲,大拇指跳到申位,5月1日干支为戊申;5月为大,干同支冲加1天,大拇指跳到酉位,7月1日干支为己酉;7月为大,干同支冲加1天,大拇指跳到卯进1位到辰,8月1日干支为庚辰。
⒌推算农历6月初10(公历8月1日),该日干支为庚辰。我们按《定日时干支诀》知道,该日干庚与己相合,按“天干五合前为主”,以天干己来推算,己的序数为2,将大拇指定在天干己的位置上。“日干定时本身数”,大拇指从第二位到丙,可知庚辰日子时为丙子。将大拇指从丙子顺推到午年时,天干为壬,午时干支为壬午。
经过在掌上推算年、月、日、时干支,可知98年农历6月初10日(公历8月1日)午时干支,分别为戊寅年己未月庚辰日壬午时。
六、需要注意的几个问题。
⒈要在理解《冯氏掌上巧推年月日时干支法》的基础上,将巧记口诀和在掌上定位推算结合起来,并经常对照万年历进行推算,才可能达到熟练生巧,运用自如。
⒉再运用此法时,应先制定一种表格,并随身携带,供推算年干支时使用。
此表格如下:
年序号 本年大小月卦(闰) 立春月日时 正月初一日干支 元旦日干 支
1988 :丨:丨丨::丨::丨: 正月初八庚子日辰时 己亥 戊申
1999 丨丨:丨丨:丨:::丨: 腊月十九丁亥日未时 甲子 癸丑
在推算逐日干支时,一定要注意大小月,分清干同支冲和干同干支冲加减的区别。
掌上巧推年月日时干支法(附录)
一、 逐年推算元旦干支口诀
欲推来年元旦日,先知今年日干支。
申子辰支年为闰,干加六位支冲支。
余年天干加五位,干冲退一便可知。
推算方法:“欲推来年元旦日,先知今年日干支。”推算来年元旦日的干支,必须先知道今年元旦日的干支,并用大拇指在掌上定位。“申子辰干年为闰,干加六位支冲支。”凡年支临申子辰的为闰年,2月29天。推算下一年元旦日的干支,只要大拇指从今年元旦日支位,跳到相冲的地干支位上,而后天干顺加六位,便是来年元旦的干支。“余年天干加五位,干冲退一便可知。”除申子辰年外,其它年干2月均为28天。大拇指在掌上定好今年元旦日支位置,推算来年元旦干支时,将大拇指跳到相冲之支退一位,天干加上五位,即是来年元旦的干支。
二、逐年推算正月初一日干支口诀
欲推来年正一月,先知今年日干支。
常年退回小月数,闰月小数五六七。
小六干同天隔三,迂五前句各加一。
逢七支同天隔三,各退一位定无异。
推算方法:“欲推来年正一月,先知今年日干支。”推算来年正月初一日的干支,必须先知道今年正月初一的干支。“常年退回小月数,闰月小数五六七。”常年,指没有闰月的年份。推算农历正月初一干支,要按《农历大小月卦口诀》,逐年编上两卦,以便确定某年的小月数。如果今年没闰月,求来年正月初一日干支。经过研究,凡有闰月之年小月数分别为五、六、七三种。“小六干同天隔三,迂五前句各加一。”闰月之年,如果小月数为六,来年正月初一日干支,于前一年初一日干支则是地支相同,而天干则顺隔三位。小月数为五的,按干同天顺隔三后干支各进一位,便是来年正月初一日干支。“逢七支同天隔三,各退一位定无异。”闰月之年小月数为七的,在确定当年正月初一日干支后,推算下一年正月初一日干支,只要按支同天顺隔三位后,干支各减一位,便时来年正月初一日干支。
三、 用卦象推算公历各月日干支法
用卦象推算公历各月日的干支,主要是按公历大小月固定不便的实际,编上一个适用任何一年的卦象。然后按大小干支循环规律,进行推算各月日的干支。公历年大小月固定卦象,上半年是《未济》卦,下半年为《蹇》卦,其卦象如图三所示。在推算过程中,要特别注意二月,因为有28天和29天之分,所以在《未济》卦象的等二爻,标上闰年合非闰年字样,以便在推算时引起注意。在推算时,要将《公历曰干支推算口诀》做为依据,确定下月日干支,然后按“月首十三二十五,支同隔干一位算”,推算出所求之日干支。图三。
6月 丨 一曰干同地支冲+1 12月 = 一日干同支冲
5月 = 一日干同地支冲 11月 丨 一日干同支冲+1
4月 丨 一日干同地支冲+1 10月 = 一日干同支冲
3月 = 闰一日干同地支冲+1 09月 丨 一日干同支冲+1
2月 丨 闰年2月29天,非一日干同支冲—2 08月 = 一日干同支冲+1
非闰年2月28天,一日干同支冲+1
1月 = 元旦日干支 07月 = 一日干同支冲
四、 用卦象推算农历各月初一日干支法
农历大小月,其天数固定不变,即大月30天,小月29天。但是,由于大小月的排列不规则,因此要按《农历大小月卦口诀》先编上本年的上下半年的月卦。然后依据两个卦象,参考《农历日干支推算口诀》,在知道正月初一的日干支后,按“大后干同地支冲,小后干支退一天‘的规律,运用卦象来推算农历各月初一日的干支。经研究发现,农历相邻两月大小月的排列,共有四种类型,其推算逐月初一干支法如下:
⑴ 两小月相邻同支冲 ⑵ 两大
— 下月干同支冲—1 = 下月干
— 本月初一日干 = 本月初一日干支
⑶大小月相邻 ⑷ 大小月相邻
— 下月干同支冲 = 下月干同支冲—1
= 本月初一日干支 — 本月初一日
△ 实例:推算2001年各月初一干支
⒈按《农历大小月卦口诀》,先将2001年编上月卦。上半年为“艮”卦,下半年为“既济”卦。
⒉2001年正月初一日干支为丁亥。
⒊推算时,要将1、2月,3、4月等相邻两月,与四种排列类型对照,然后按相同类型进行推算。
⒋根据卦象,逐月进行推算。
6月“ — ”干同支冲己酉 12月“ = ” 干同支冲—1辛巳
5月“ — ”干同支冲—1己卯 11月“ — ” 干同支冲壬子
闰4月“ — ”干同支冲丙戌 10月“ = ” 干同支—1壬午
4月“ — ” 干同支冲—1丙辰 9月“ — ” 干同支冲葵丑
3月“ — ” 干同支冲丁亥 8月“ = ” 干同支冲—1癸末
2月“ — ” 干同支冲丁巳 7月“ — ” 干同支冲—1甲寅
1月“ — ” 正月初一丁亥
经过逐卦推算农历12月初一为辛巳。
我有一法:
先认识一下“天干序数”和“地支序数”:
天 干: 甲 乙 丙 丁 戊 己 庚 辛 壬 癸
天干序数: 1 2 3 4 5 6 7 8 9 10
地 支: 子 丑 寅 卯 辰 巳 午 未 申 酉 戌 亥
地支序数: 1 2 3 4 5 6 7 8 9 10 11 12
一、由甲子年推算公历年
公式:(天干序数 - 地支序数)÷2×10 + 3 + 天干序数
上述得数再加任意一个60的倍数即可
例1:求丁丑年为公历何年。
解:天干“丁”的序数是4,地支“丑”的序数是2,代入上述公式:
(4-2)÷2×10 + 3 + 4 = 17
答:公元后个丁丑年为公元17年,17加60的倍数的年份均为丁丑年(……公元77年、 137年、……1817年、1877年、1937年、1997年、2057年……)。
注:如果天干序数比地支序数小,则公式中的两个天干序数要先加10。
例2:求甲午年的公历年份。
解:天干“甲”序数为1,地支“午”序数为7。天干“甲”的序数小于地支“午”的序 数,故天干序数1要先加10:
(1+10-7)÷2×10 + 3 +(1+10)= 34
答:公元后个甲午年为公元34年,34加60的倍数的年份均为甲午年(……公元94年、 154年、……1834年、1894年、1954年、2014年、2074年)。
二、由公历年推算干支年
公式:
取(公历年数-3)的个位数作天干的序数(个位数是0时看作10)
取(公历年数-3)÷12 的余数作地支的序数(余数是0时看作12)
用两个序数所对应的天干和地支相配
例1:求2005年的甲子
2005-3 = 2002 ,取个位数2作天干序数,即“乙”
(2005-3)÷ 12 = 166 余10,取余数10作地支序数,即“酉”
天干与地支配合为“乙酉”
答:2005年是乙酉年。
例2:求1983年的甲子
1983-3 = 1980 ,个位数是 0 ,看作10 ,10是天干“癸”的序数。
(1983-3)÷ 12 = 165 余数是 0 ,看作12 ,12是地支“亥”的序数。
天干与地支配合为“癸亥”
答:1983年为癸亥年。
版权声明:本文内容由互联网用户自发贡献。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 836084111@qq.com,本站将立刻删除。
下一篇