簡單的萬年曆(Perpetual Calendar),也有小技巧唷。
>> 整除4的年份為閏年
>> 整除100的年份為平年(ex:1900、1800)
>> 整除400的年份為閏年(ex:1600、2000)
若是要更精確的計算也有人加入整除4000的年份也不是閏年,只是西元4000年離我們好遠,我想到時候.Net已經出到第.Net 500 SP1了吧,應該會有別的高手去寫新的萬年曆,我在這邊先好好分享我的程式碼就好了。
1.宣告一個陣列,儲存1到12月每個月的"平年"天數。
Dim days() As Integer = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
2.這邊因為是範例,所以只用到1995年當作基準年計算這之中有多少個閏年,其實也可以找更久遠以前的,當然,越久遠越好,只是太久了迴圈要多跑幾圈,真空管電腦應該不是和這個程式喔。
For yy = 1995 To Val(ComboBox1.Text) Step 1
If (yy Mod 4 = 0 And yy Mod 100 <> 0) Then
leap = leap + 1
ElseIf (yy Mod 100 = 0 And yy Mod 400 = 0) Then
leap = leap + 1
End If
Next
3.加入上面所說的判定閏年演算法。
If (Val(ComboBox1.Text) Mod 4 = 0 And Val(ComboBox1.Text) Mod 100 <> 0) Then
leap_tf = 1
dd = (Val(ComboBox1.Text) - 1995) * 365 + leap - 1
days(2) = 29
ElseIf (Val(ComboBox1.Text) Mod 100 = 0 And Val(ComboBox1.Text) Mod 400 = 0) Then
leap_tf = 1
dd = (Val(ComboBox1.Text) - 1995) * 365 + leap - 1
days(2) = 29
Else
leap_tf = 0
dd = (Val(ComboBox1.Text) - 1995) * 365 + leap
End If
4.判斷星期幾。
week_dd = dd Mod 7
基本上這樣就大功告成了,至於要用什麼樣的形式展現就要看您自己怎麼設計啦。