根據(jù)經(jīng)驗, 這個算法非常復(fù)雜. 經(jīng)過查找,終于得到一些資料, 在此愿與大家分享。 首先陰歷以月為基本單位,一個月以新月出現(xiàn)的那一天為始直至下一個新月出現(xiàn)的前一天。 由于月亮公轉(zhuǎn)的周期介于29到30天之間,陰歷的一個月也就由新月出現(xiàn)時刻的早晚或是29天或是30天。 大月為30天,小月為29天。 與陽歷不同的是,大小月在不同的年中不固定。 如春節(jié)的前一天常稱為大年三十,但有不少年如2000年的陰歷十二月只有29天。 由于十二個月的時間較陽歷年即地球繞太陽公轉(zhuǎn)一周的時間短11天左右. 為了使陰歷年與陽歷年保持相對穩(wěn)定,每隔兩三年就需要加入一個閏月。 大約每十九年要加入七個閏月。 而二十四節(jié)氣則是由地球在繞太陽公轉(zhuǎn)的軌道上的位置確定的。 以每年的冬至為始,每15度為一個節(jié)氣。 是故二十四節(jié)氣在陽歷的每月中有大概固定的日期。 古時以二十四節(jié)氣指導(dǎo)農(nóng)耕,這就是陰歷又稱農(nóng)歷的原因。 其中陽歷下半月的十二個節(jié)氣又稱為中氣。 中氣出現(xiàn)的時刻和閏月的確定有直接的關(guān)系。 陰歷的計算有下列四條規(guī)則: 1.所有新月和節(jié)氣出現(xiàn)的時刻的計算以東經(jīng)120度即東八區(qū)標(biāo)準(zhǔn)時為準(zhǔn)。 但計算1929年以前的陰歷時應(yīng)以北京即東經(jīng)116度25分的當(dāng)?shù)貢r為準(zhǔn)。 2.新月出現(xiàn)的一天為一個月的第一天。 如某個節(jié)氣的出現(xiàn)時刻也在這一天,則不論該節(jié)氣的出現(xiàn)時刻是否比新月晚,一律算落入新的一個月中。 3.每年的冬至總是落在這年的十一月中。 從一年的冬至的第二天起到下一年冬至這一天止的這段時間稱為一歲。 如一歲中有十三個新月出現(xiàn),則這一歲為閏歲,要加入一個閏月。 4.閏歲中第一個沒有中氣的月為閏月。 因為一歲中只有十二個中氣,所以閏歲中至少有一個月沒有中氣,也存在有兩個月沒有中氣的可能性。 但這種情況下只有第一個沒有中氣的月為閏月。 閏月的前一個月為幾月則該閏月稱為閏幾月。 根據(jù)以上信息, 我們知道農(nóng)歷是根據(jù)天文觀測進(jìn)行指定的(也許可以在天文學(xué)的書上找到說明)。 為了簡化轉(zhuǎn)換計算, 很多程序人員設(shè)計了基于"時間段內(nèi)查表"方法的例程. 更具體的說明和源碼請參考下面這些資料:
公司主營業(yè)務(wù):網(wǎng)站設(shè)計制作、成都做網(wǎng)站、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)公司是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)公司推出梨樹免費做網(wǎng)站回饋大家。
Public Class Form1
Dim 設(shè)置時間 As DateTime
Private Sub D1_CloseUp(ByVal sender As Object, ByVal e As System.EventArgs) Handles 日期時間選擇.CloseUp
和.Text = 日期時間選擇.Value
設(shè)置時間 = 日期時間選擇.Value
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
日期時間選擇.Value = Now
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If Now.ToString = 和.Text Then
提醒顯示.Text = "時間到了 你該去做些什么事了吧"
'Timer1.Enabled = False
Else
提醒顯示.Text = "現(xiàn)在時間是:" Now
End If
End Sub
Private Sub 和_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 和.TextChanged
設(shè)置時間 = 和.Text
End Sub
End Class
Sub Main()
Dim Ispath As String
Console.Write("請輸入目錄:")
Ispath = Console.ReadLine()
Do While (Not Directory.Exists(Trim(Ispath)))
Console.WriteLine("你輸入的目錄不存在,請檢查重新輸入.")
Console.Write("請輸入目錄:")
Ispath = Console.ReadLine()
Loop
Console.WriteLine("目錄為:{0}", Ispath)
Console.ReadLine()
End Sub