Public Function DaysInMonth(ByVal Year As UShort, ByVal Month As Byte) As Byte
' Function that returns the number of days in the given month
' using the current Gregorian calendar
' Example: DaysInMonth(2000, 2) = 29
'
' Visustin sample algorithm
' ©2006 Aivosto Oy (www.aivosto.com)
Select Case Month
Case 1, 3, 5, 7, 8, 10, 12
' Jan, Mar, May, Jul, Aug, Oct, Dec have 31 days
Return 31
Case 4, 6, 9, 11
' Apr, Jun, Sep, Nov have 30 days
Return 30
Case 2
' February - need to check for leap year
If (Year Mod 400) = 0 Then
' Year divisible by 400: Leap year
Return 29
ElseIf (Year Mod 100) = 0 Then
' Year divisible by 100 (but not 400): Not leap year
Return 28
ElseIf (Year Mod 4) = 0 Then
' Year divisible by 4: Leap year
Return 29
Else
' Not leap year
Return 28
End If
Case Else
' Error, invalid month
Return 0
End Select
End Function
|