陰曆陽曆轉換演算法?
如何把農曆轉成陽曆,求演算法
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......餘下全文>>
求農曆公曆轉換演算法
程式設計不太懂
傳下來 口訣
乘五除四九加日
雙月間隔三十天。
一二自加整少一,
三五七八十尾前。
具體的演算法你可網上找下資料 百度上很多的 我就不多累贅了的
農曆和陽曆轉換有什麼規律啊?
沒有。陽曆是以地球圍繞太陽公轉一週的時間(即: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被數年)能碰到一起或只差一天。
農曆轉換成公曆的計算公式?
因為公曆(現在用的是格里曆,以前還曾用儒列歷)和中國農曆都不是嚴格按一個公式計算得到的,所以兩個曆法沒有直接的公式。
試圖用一個簡單的公式,而不利用許多像萬年曆一樣的資料(儘管可以簡化),就達到公農曆轉換的目的,這是不可能的。我們能見到的所有公農曆轉換的軟體,都存有多少不等的一些年份的歷法資料。
這些資料之中,最重要的是農曆的每月天數。因為農曆是陰陽曆,陰曆部分(按月相編的部分)決定月日,陽曆部分(按太陽高度編的部分)就是節氣。節氣基本上是與公曆直接對應的,可以較容易的推算;但月相週期與地球公轉的關係相對複雜,一般都需要天文觀測資料授時,所以農曆每月是大月還是小月沒有簡單的公式。
至於公曆和農曆的置閏,倒都有一定的方式推算,並不困難。
如果只是天文資料,其實都還是可以算的——因為天文週期十分穩定,我們只要嚴格地按天文週期推算就可以了。可是還有更為麻煩的一點,就是公曆和農曆這些曆法,並不是完全嚴格地按照天文上的實際週期進行的,還有許多人為的因素。最著名的就是羅馬皇帝幾次修改2、8等月份長短,以及儒列歷中因計算不準確而人為地去掉了十天等事。中國農曆也有因為古代天文觀測不準確造成的政府頒佈的歷法與天象不吻合的(我們不能苛求古人觀測的精度)。所以這兩部曆法都是與一個時期社會有關的東西,也就沒有一定的規律可循了。
javascript陽曆轉陰曆方法?
我這裡剛好有這個演算法程式碼,請看:
var LunarDate = { madd: new Array(0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334), HsString: '甲乙丙丁戊己庚辛壬癸', EbString: '子醜寅卯辰巳午未申酉戌亥', NumString: "一二三四五六七八九十", MonString: "正二三四五六七八九十冬臘", CalendarData: new Array(0xA4B, 0x5164B, 0x6A5, 0x6D4, 0x415B5, 0x2B6, 0x957, 0x2092F, 0x497, 0x60C96, 0xD4A, 0xEA5, 0x50DA9, 0x5AD, 0x2B6, 0x3126E, 0x92E, 0x7192D, 0xC95, 0xD4A, 0x61B4A, 0xB55, 0x56A, 0x4155B, 0x25D, 0x92D, 0x2192B, 0xA95, 0x71695, 0x6CA, 0xB55, 0x50AB5, 0x4DA, 0xA5B, 0x30A57, 0x52B, 0x8152A, 0xE95, 0x6AA, 0x615AA, 0xAB5, 0x4B6, 0x414AE, 0xA57, 0x526, 0x31D26, 0xD95, 0x70B55, 0x56A, 0x96D, 0x5095D, 0x4AD, 0xA4D, 0x41A4D, 0xD25, 0x81AA5, 0xB54, 0xB6A, 0x612DA, 0x95B, 0x49B, 0x41497, 0xA4B, 0xA164B, 0x6A5, 0x6D4, 0x615B4, 0xAB6, 0x957, 0x5092F, 0x497, 0x64B, 0x30D4A, 0xEA5, 0x80D65, 0x5AC, 0xAB6, 0x5126D, 0x92E, 0xC96, 0x41A95, 0xD4A, 0xDA5, 0x20B55, 0x56A, 0x7155B, 0x25D, 0x92D, 0x5192B, 0xA95, 0xB4A, 0x416AA, 0xAD5, 0x90AB5, 0x4BA, 0xA5B, 0x60A57, 0x52B, 0xA93, 0x40E95), Year: null, Month: null, Day: null, TheDate: null, GetBit: function(m, n){ return (m >> n) & 1; }, e2c: function(){ this.TheDate = (arguments.length != 3) ? new Date(): new Date(arguments[0], arguments[1], arguments[2]); var total, m, n, k; var isEnd = false; var tmp = this.TheDate.getFullYear(); total = (tmp - 1921) * 365 + Math.floor(乏鼎催刮詘......餘下全文>>
實現陽曆轉陰曆演算法
下面是一個關於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) < 1900 Then
Throw New NotSupportedException("本函式只提供1900年至2011年的日曆轉換!")
End If
Dim AddMonth, AddDay, AddYear, getDay, i As Integer
Dim RunYue As Boolean
Dim conDate As DateTime
Dim daList(2011) As String
daList(1900) = "010010110110180131"
daList(1901) = "010010101110000219"
daList(1902) = "101001010111000208"
daList(1903) = "010100100110150129"
daList(1904) = "110100100110000216"
daList(1905) = "110110010101000204"
daList(1906) = "011010101010140125"
daList(1907) = "010101101010000213"
daList(1908) = "100110101101000202"
daList(1909) = "010010101110120122"
daList(1910) = "010010101110000210"
daList(1911) = "101001001101160130"
daList(1912) = "101001001101000218"
daList(1913) = "110100100101000206"
daList(1914) = "110101010100150126"
daList(1915) = "101101010101000214"
daList(1916) = "010101101010000204"
daList(1917) = "100101101101020123"
daList(1918) = "100101011011......餘下全文>>
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"))),那就更像農曆表示法了,不過因為農曆每年開始日期都不一樣,所以函式很難達到十分精確的結果,只能是將就著用。
請問知道陽曆怎麼計算陰曆
1、沒有計算方法,只能一天一天排下來。因為農曆不象陽曆那樣固定一年大月就是1、3、5、7、8、10、12等12個月,它經常會出現潤月,而這個潤月又不是固定的,所以沒有計算方法
2、黃帝內經中的月份是農曆三海
3、現行陽曆即格里曆,又譯國瑞歷、額我略曆、格列高利曆、格里高利曆,稱公元。是由義大利醫生兼哲學家裡利烏斯(Aloysius Lilius)改革儒略曆制定的歷法,由教皇格列高利十三世在1582年頒行。
有沒有什麼函式公式可以將陰曆換成陽曆,陽曆又可以轉換成陰曆
沒有公式的,陽曆換算都是查表實現,可以利用表上只存每個月1號的資料來稍微簡化。