公曆與農曆轉換?
農曆轉換公曆對照表
是公曆1945年4月29日 星期日
公曆和農曆之間如何轉換
公曆,它是國際通用的。陽曆 以地球繞太陽轉一圈的時間定做一年,共3 65天5小時48分46秒。平年只計365天這個 整數,不計尾數;一年分做12個月,大月31 天,小月30天,二月只有28天。四年的尾 數積累起來共1天光景,加在第四年的二月 裡,這一年叫做閏年。所以閏年的二月有2 9天。陰曆以月亮圓缺一次的時間定做一個 月,共29天半。為了算起來方便,大月定 做30天,小月29天,一年12個月中,大小 月大體上交替排列。陰曆一年只有354天左 右,也沒有平年閏年的差別。 陰曆不考慮地球繞太陽的執行,因此使得 四季的變化在陰曆上就沒有固定的時間, 它不能反映季節,這是一個很大的缺點。 為了克服這個缺點,後來人們定了一個折 衷的歷,就是所謂陰陽合曆。現在我國還 在使用的夏曆(也有人叫它農曆或陰曆),就 是這種陰陽合曆。它跟陰曆一樣,也以月 亮圓缺一次的時間定做一個月,也是大月3 0天,小月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.5691)÷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天,只多一天。
電子表格中怎樣將農曆轉換為公曆
1、農曆轉換為公曆,首先需要一個農曆和公曆的對照表
2、假設對照表的格式為:A列為農曆,B列為公曆。
3、此時可以用VLOOKUP函式進行轉換,公式為:=VLO暢KUP(需要轉換的農曆日期,A:B,2,0)
4、特別注意:需要轉換的農曆日期必須與對照表中A列格式一致。
求農曆與公曆的轉換公式!!!
再說你要轉換也不用在excel裡面用啊。 word有個日曆模板,可以同時出現陽曆和陰曆 EXCEL本身沒有這個功能,但是通過VBA可以轉,但是也很麻煩,其實生日
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"))),那就更像農曆表示法了,不過因為農曆每年開始日期都不一樣,所以函式很難達到十分精確的結果,只能是將就著用。
農曆日期和公曆日期怎麼轉換,
我做計算器的,這個就是轉化,你看哈嘛!
//將日期換算為公曆的天數
private int toJulian(){
int jy=year;
if(year<0)
jy++;
int jm=month;
if(month>2)
jm++;
else{
jy--;
jm+=13;
}
int jul=(int)(java.lang.Math.floor(365.25*jy)
+java.lang.Math.floor(30.6001*jm)+day+1720995.0);
int IGREG=15+31*(10+12*year);
if(day+31*(month+12*year)>=IGREG){
int ja=(int)(0.01*jy);
jul+=2-ja+(int)(0.25*ja);
}
return jul;
}
//從具體的天數得到日期
private void formJulian(int j){
int ja=j;
int JGREG=2299161;
if(j>=JGREG){
int jalpha=(int)(((float)(j-1867216)-0.25)/36524.25);
ja+=1+jalpha-(int)(0.25*jalpha);
}
int jb=ja+1524;;
int jc=(int)(6680.0+((float)(jb-2439870)-122.1)/365.25);
int jd=(int)(362*jc+(0.25*jc));
int je=(int)((jb-jd)/30.6001);
day=jb-jd-(int)(30.6001*je);
month=je-1;
if(month>12)
month -=12;
year=jc-4715;
if(month>2)
--year;
if(year<=0)
--year;
}
private int day;
private int month;
private int year;