Se nelle operazioni fra date è necessario tenere conto dell'ora legale è possibile utilizzare il metodo ToLocalTime:
Si veda il seguente codice:
Dim date1 As DateTime = #10/29/2006 2:00:00 AM#
Console.WriteLine(date1.AddHours(2))
Console.WriteLine(date1.AddHours(2).ToLocalTime)
Output:
29/10/2006 4.00.00
29/10/2006 5.00.00
Per sapere se una data cade nel periodo dell'ora legale è possibile utilizzare il metodo System.TimeZone.CurrentTimeZone.IsDaylightSavingTime
Si veda il seguente codice:
Dim date1 As Date = #10/28/2006 2:00:00 AM#
Dim date2 As Date = #10/29/2006 4:00:00 AM#
Console.WriteLine(System.TimeZone.CurrentTimeZone.DaylightName)
Console.WriteLine(System.TimeZone.CurrentTimeZone.GetDaylightChanges(2006).Start)
Console.WriteLine(System.TimeZone.CurrentTimeZone.GetDaylightChanges(2006).End)
Console.WriteLine(System.TimeZone.CurrentTimeZone.IsDaylightSavingTime(date1))
Console.WriteLine(System.TimeZone.CurrentTimeZone.IsDaylightSavingTime(date2))
Output:
ora solare Europa occidentale
26/03/2006 2.00.00
29/10/2006 3.00.00
True
False