Для не текущих дат (DST 2007 +):
Во-первых, вам нужна функция для определения количества определенных дней недели в месяце:
Public Function NDow(Y As Integer, M As Integer, _
N As Integer, DOW As Integer) As Date
' Returns Date of Nth Day of the Week in Month
NDow = DateSerial(Y, M, (8 - Weekday(DateSerial(Y, M, 1), _
(DOW + 1) Mod 8)) + ((N - 1) * 7))
End Function
Затем вы можете проверить день перехода на летнее время в сравнении со следующими вызовами функций:
Падение: NDow (Год (newdate), 11, 1, 1)
Весна: NDow (Год (newdate), 3, 2, 1)
На текущую дату:
вызов функции Windows API GetTimeZoneInformation,
и он вернет перечисление (целое число) со статусом.
Я получил код для этого с отличного сайта Чипа Пирсона в Excel.
Сайт Пирсона