Daylight Savings Time-determining the dates when the switch occurs

I was wondering if there were any vb functions or tricks to finding out the day the time changes in a given year.

In my program I need to know which day the time changes so my program can adapt its routines to account for the time change in its calculations.

if someone knows a quick way to do this that would be great.

Who is Participating?
EDDYKTConnect With a Mentor Commented:
You use this

Replace 2003 to any year you want

Option Explicit

Private Sub Command1_Click()
Debug.Print CalcDayLightBoundary(2003, 4, 1)
Debug.Print CalcDayLightBoundary(2003, 10, 2)
End Sub
Private Function CalcDayLightBoundary(Yr As Integer, Mon As Integer, Hr As Integer) As Date
    Dim tt As Date, NumDays As Integer
    On Error Resume Next
    tt = DateSerial(Yr, Mon, 1) + TimeSerial(Hr, 0, 0)
    NumDays = IIf(Weekday(tt) = 1, 0, 7 - Weekday(tt) + 1)
    If (Mon = 10) Then
        NumDays = NumDays + 28
        If (NumDays > 31) Then NumDays = NumDays - 7
    End If
    CalcDayLightBoundary = DateAdd("D", NumDays, tt)
End Function
For the states which use daylight savings time, it starts at midnight on the first sunday in april, and ends at midnight on the last sunday in october.

These functions return the start and end date for daylight savings time.

Private Function FirstSunApril(p_lYear As Long) As Date
    Dim d1stOfMonth As Date
    d1stOfMonth = CDate("4/1/" & p_lYear)
    Dim d1stSunday  As Date
    If Weekday(d1stOfMonth) = 1 Then
        d1stSunday = d1stOfMonth
        d1stSunday = DateAdd("d", 8 - Weekday(d1stOfMonth), d1stOfMonth)
    End If
    FirstSunApril = d1stSunday

End Function

Private Function LastSunOct(p_lYear As Long) As Date
    Dim dLastOfMonth As Date
    dLastOfMonth = CDate("10/31/" & p_lYear)
    Dim dLastSunday  As Date
    If Weekday(dLastOfMonth) = 1 Then
        dLastSunday = dLastOfMonth
        dLastSunday = DateAdd("d", -1 * (Weekday(dLastOfMonth) - 1), dLastOfMonth)
    End If
    LastSunOct = dLastSunday

End Function
unreal400Author Commented:
Thanks EDDYKT  that was exactly what I was looking for.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.