Gestione dell’ora legale

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