萬年歷不難做。難得是數據,數據比較龐大啊。
在大興等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統性、市場前瞻性、產品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供網站制作、做網站 網站設計制作按需網站策劃,公司網站建設,企業(yè)網站建設,成都品牌網站建設,全網整合營銷推廣,外貿網站制作,大興網站建設費用合理。
分析一下。你只需要考慮一下閏年。農歷60年一個循環(huán),
陰歷陽歷分開算,最后數據組合就是既有陰歷又有陽歷了。
同樣,節(jié)氣也是,做一個陰歷節(jié)氣表,一個陽歷節(jié)氣表。
做下對應就可以了。
具體實現就不多說了。比較容易,你可以做基于web的也可以基于form的。開發(fā)語言可以用vs系列,java系列。如果是web的,可以用php,aspx,jsp。數據庫用mysql就可以,mssql比較傻瓜容易上手。oracle的話沒必要。
提供一個解決方案:
做基于web的。aspx+c#+ado.net+mssql
這樣你就可以把工作重點放在算法實現上。
用日期函數day()可獲得當前日期,time()可獲得當前系統時間.
dim CurDay as string
dim CurTime as string
curday=day()
curtime=time()
Label1.Caption = Date
就能在Label16顯示當前日期
now 這個函數可以獲得當前系統時間(包括年月日,小時分鐘秒)
而
year()
month()
day()
等等則可以從now返回的值中分別提取年,月,日的信息
VB.NET包含內置的或內部的函數,如MsgBox、CStr等。此外,還可用Function語句編寫自己的VB.NET Function過程。函數過程的語法是:
{Private|Public|Friend|}
Function functionname(argument list)[As data type]
Statements
End Function
與Sub過程一樣,VB.NET Function過程也是一個獨立的過程,可讀取參數、執(zhí)行一系列語句并改變其參數的值。與Sub過程不同的是,Function過程可返回一個值到調用的過程。在Sub過程與Function過程之間有三點區(qū)別:
(1)一般來說,語句或表達式的右邊包含函數過程名和參數(returnvalue=function),這就調用了函數。
(2)與變量完全一樣,函數過程有數據類型。這就決定了返回值的類型(如果沒有As子句,缺省的數據類型為Object)。
(3)可以給functionname賦一個值,即為返回的值。
VB.NET Function過程返回一個值時,該值可成為表達式的一部分。例如,下面是已知直角三角形直角邊的值,計算第三邊(斜邊)的函數:
Function Hypotenuse(A as Integer,B As Integer) As String
Hypotenuse=Math.Sqrt(A^2+B^2)
End Function
在Visual Basic中調用VB.NET Function過程的方法和調用任何內部函數的方法是一樣的:
Label1.Text=CStr(Hypotenuse(CInt(Text1.Text),CInt(Text2.Text)))
strX=CStr(Hypotenuse
(Width,Height))
根據經驗, 這個算法非常復雜. 經過查找,終于得到一些資料, 在此愿與大家分享。 首先陰歷以月為基本單位,一個月以新月出現的那一天為始直至下一個新月出現的前一天。 由于月亮公轉的周期介于29到30天之間,陰歷的一個月也就由新月出現時刻的早晚或是29天或是30天。 大月為30天,小月為29天。 與陽歷不同的是,大小月在不同的年中不固定。 如春節(jié)的前一天常稱為大年三十,但有不少年如2000年的陰歷十二月只有29天。 由于十二個月的時間較陽歷年即地球繞太陽公轉一周的時間短11天左右. 為了使陰歷年與陽歷年保持相對穩(wěn)定,每隔兩三年就需要加入一個閏月。 大約每十九年要加入七個閏月。 而二十四節(jié)氣則是由地球在繞太陽公轉的軌道上的位置確定的。 以每年的冬至為始,每15度為一個節(jié)氣。 是故二十四節(jié)氣在陽歷的每月中有大概固定的日期。 古時以二十四節(jié)氣指導農耕,這就是陰歷又稱農歷的原因。 其中陽歷下半月的十二個節(jié)氣又稱為中氣。 中氣出現的時刻和閏月的確定有直接的關系。 陰歷的計算有下列四條規(guī)則: 1.所有新月和節(jié)氣出現的時刻的計算以東經120度即東八區(qū)標準時為準。 但計算1929年以前的陰歷時應以北京即東經116度25分的當地時為準。 2.新月出現的一天為一個月的第一天。 如某個節(jié)氣的出現時刻也在這一天,則不論該節(jié)氣的出現時刻是否比新月晚,一律算落入新的一個月中。 3.每年的冬至總是落在這年的十一月中。 從一年的冬至的第二天起到下一年冬至這一天止的這段時間稱為一歲。 如一歲中有十三個新月出現,則這一歲為閏歲,要加入一個閏月。 4.閏歲中第一個沒有中氣的月為閏月。 因為一歲中只有十二個中氣,所以閏歲中至少有一個月沒有中氣,也存在有兩個月沒有中氣的可能性。 但這種情況下只有第一個沒有中氣的月為閏月。 閏月的前一個月為幾月則該閏月稱為閏幾月。 根據以上信息, 我們知道農歷是根據天文觀測進行指定的(也許可以在天文學的書上找到說明)。 為了簡化轉換計算, 很多程序人員設計了基于"時間段內查表"方法的例程. 更具體的說明和源碼請參考下面這些資料: