输入某一天的年月日,计算这天是该年的第几天。
1.窗体上设计两个文本框,一个计算按钮,两个组合框和若干标签。如图29。
图29
2.首先判断该年是否是闰年,如果不是通过将每月的天数积累计算出此天前的天数,如果是闰年则将不是闰年的天数+1,DayTabs数组为每月的天数,SumDay函数用于计算天数,返回总天数,Leap用于判断是否为闰年。
- 程序代码如下:
Dim Shared MyYear As Integer, MyMonth As Integer, MyDay As Integer
Dim Shared DayTab(12) As Integer
Sub Form1_Shown(hWndForm As hWnd,UserData As Integer)
Dim i As Integer
DayTab(0) = 31 : DayTab(1) = 28 : DayTab(2) = 31 : DayTab(3) = 30
DayTab(4) = 31 : DayTab(5) = 30 : DayTab(6) = 31 : DayTab(7) = 31
DayTab(8) = 30 : DayTab(9) = 31 : DayTab(10) = 30 : DayTab(11) = 31
MyMonth = 1
Myday = 1
For i = 1 To 31
cmbDate.AddItem(i)
Next
For i = 1 To 12
cmbMonth.AddItem(i)
Next
End Sub
'[Form1.txtYear]事件 : 失去输入焦点
Sub Form1_txtYear_EN_KillFocus(hWndForm As hWnd, hWndControl As hWnd)
If (Val(txtYear.text) > 0) Then
MyYear = Val(txtYear.Text)
Else
MsgBox("年份出错!")
txtYear.SetFocus()
End If
End Sub
'[Form1.cmbMonth]事件 : 列表框中更改当前选择时
Sub Form1_cmbMonth_CBN_SelChange(hWndForm As hWnd, hWndControl As hWnd)
MyMonth=Val(cmbMonth.Text)
Print(MyMonth)
End Sub
'[Form1.cmbDate]事件 : 列表框中更改当前选择时
Sub Form1_cmbDate_CBN_SelChange(hWndForm As hWnd, hWndControl As hWnd)
MyDay=Val(cmbDate.Text)
Print(MyDay)
End Sub
Function SumDay(ByVal Month1 As Integer, ByVal Day1 As Integer)As Integer
Dim i As Integer
For i = 0 To Month1 -2
Day1=Day1+DayTab(i)
Next
SumDay=Day1
End Function
Function Leap(ByVal Year1 As Integer) As BOOL
Dim L As Integer
L = (Year1 Mod 4 = 0) And (Year1 Mod 100 <> 0) Or (Year1 Mod 400 = 0)
Leap=L
End Function
'[Form1.cmdStart]事件 : 单击
Sub Form1_cmdStart_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd)
Dim days As Integer
days = sumday(MyMonth, MyDay)
If (leap(MyYear) And MyMonth >= 3) Then
days=days+1
End If
txtDay.Text=Str(days)
End Sub