陽曆農曆轉換計算?

General 更新 2024年05月19日

農曆轉換成公曆的計算公式?

因為公曆(現在用的是格里曆,以前還曾用儒列歷)和中國農曆都不是嚴格按一個公式計算得到的,所以兩個曆法沒有直接的公式。

試圖用一個簡單的公式,而不利用許多像萬年曆一樣的資料(儘管可以簡化),就達到公農曆轉換的目的,這是不可能的。我們能見到的所有公農曆轉換的軟體,都存有多少不等的一些年份的歷法資料。

這些資料之中,最重要的是農曆的每月天數。因為農曆是陰陽曆,陰曆部分(按月相編的部分)決定月日,陽曆部分(按太陽高度編的部分)就是節氣。節氣基本上是與公曆直接對應的,可以較容易的推算;但月相週期與地球公轉的關係相對複雜,一般都需要天文觀測資料授時,所以農曆每月是大月還是小月沒有簡單的公式。

贊助廣告

至於公曆和農曆的置閏,倒都有一定的方式推算,並不困難。

如果只是天文資料,其實都還是可以算的——因為天文週期十分穩定,我們只要嚴格地按天文週期推算就可以了。可是還有更為麻煩的一點,就是公曆和農曆這些曆法,並不是完全嚴格地按照天文上的實際週期進行的,還有許多人為的因素。最著名的就是羅馬皇帝幾次修改2、8等月份長短,以及儒列歷中因計算不準確而人為地去掉了十天等事。中國農曆也有因為古代天文觀測不準確造成的政府頒佈的歷法與天象不吻合的(我們不能苛求古人觀測的精度)。所以這兩部曆法都是與一個時期社會有關的東西,也就沒有一定的規律可循了。

贊助廣告

農曆和公曆是怎麼轉換的?(怎麼算的?)

你是要口算還是要用筆算?

告訴你,這樣子算不靠譜的,根本算不出來,涉及到的轉換不是簡單的幾個公式能得出,相反,它的轉換相當複雜。

如果有興趣編寫程式的,我可以提供轉換函式庫,呼叫一個函式就可以實現農曆與公曆的互轉了。

目前我已經完美地實現了轉換,如果需要,我可以提供。

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"))),那就更像農曆表示法了,不過因為農曆每年開始日期都不一樣,所以函式很難達到十分精確的結果,只能是將就著用。

農曆和陽曆轉換有什麼規律啊?

沒有。陽曆是以地球圍繞太陽公轉一週的時間(即: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被數年)能碰到一起或只差一天。

請問知道陽曆怎麼計算陰曆

1、沒有計算方法,只能一天一天排下來。因為農曆不象陽曆那樣固定一年大月就是1、3、5、7、8、10、12等12個月,它經常會出現潤月,而這個潤月又不是固定的,所以沒有計算方法

2、黃帝內經中的月份是農曆三海

3、現行陽曆即格里曆,又譯國瑞歷、額我略曆、格列高利曆、格里高利曆,稱公元。是由義大利醫生兼哲學家裡利烏斯(Aloysius Lilius)改革儒略曆制定的歷法,由教皇格列高利十三世在1582年頒行。

公曆農曆轉換

回曆、公曆、農曆的換算

(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日,因此只要查清二者在月份上關係,便可將回歷換算為中國農曆。馬以愚先生稱:“......餘下全文>>

萬年曆公曆陰曆計算

你這是要寫程式還是僅僅為了轉換一個日期?

寫程式的話,簡單地,用一個對照表,就可以實現公曆轉農曆,農曆轉公曆的計算了。

比如,用以下的演算法壓縮出來的資料,通過逆向計算,可以還原出這些資料,再通過這些資料來計算公曆和農曆,非常方便。

//農曆月份資訊。一年用3個位元組表示

//+-------------------------------------------------------------------------+

//| 第23位 | 第22-17位 | 第16-13位 | 第12-0位 |

//|--------+------------------------+------------+--------------------------|

//| 保留 | 農曆正月初一的年內序數 | 閏月 | 一個位元對應一個月份大小 |

//+-------------------------------------------------------------------------+

//月份大小資料是月份小的在低位,月份大的在高位,即正月在最低位。

//以1900年為例,3個位元組的資料展開成二進位制位:

// 0 011110 1000 1 0 1 1 0 1 1 0 1 0 0 1 0

//保留 1月31日(春節) 閏八月 從左往右依次十二月,十一月……閏八月、八月、七月……正月的天數

//農曆月份對應的位為0,表示這個月為29天(小月),為1表示有30天(大月)。

以上演算法附帶C/C++原始碼都在連結:pan.baidu.com/s/1qY9ysBM 密碼:zu7m

這演算法效果還是非常不錯的,如果覺得還是不夠的,我這裡還有Excel外掛,以及一個C++版本的庫,查詢更方便。

在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,0x0d250,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,0x0d250,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,0x0d250,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......餘下全文>>

相關問題答案
陽曆農曆轉換計算?
陰曆陽曆轉換計算公式?
陽曆農曆轉換器?
出生日期陽曆農曆轉換?
陽曆農曆陰曆轉換?
陽曆農曆怎麼轉換?
陽曆農曆轉換公式?
陰曆陽曆轉換演算法?
萬年曆農曆轉換陽曆?
星座公曆農曆轉換查詢?