Procedura: accedere agli oggetti predefiniti dell'ora UTC e del fuso orario locale
La classe TimeZoneInfo fornisce due proprietà, Utc e Local, che forniscono il codice di accesso agli oggetti predefiniti del fuso orario. In questo argomento viene illustrato come accedere agli oggetti TimeZoneInfo restituiti da tali proprietà.
Per accedere all'oggetto TimeZoneInfo dell'ora UTC (Coordinated Universal Time)
Utilizzare la proprietà static (Shared in Visual Basic) TimeZoneInfo.Utc per accedere all'ora UTC (Coordinated Universal Time).
Anziché assegnare l'oggetto TimeZoneInfo restituito dalla proprietà a una variabile oggetto, continuare ad accedere all'ora UTC (Coordinated Universal Time) tramite la proprietà TimeZoneInfo.Utc.
Per accedere al fuso orario locale
Utilizzare la proprietà static (Shared in Visual Basic) TimeZoneInfo.Local per accedere al fuso orario locale del sistema.
Anziché assegnare l'oggetto TimeZoneInfo restituito dalla proprietà a una variabile oggetto, continuare ad accedere al fuso orario locale tramite la proprietà TimeZoneInfo.Local.
Esempio
Nel codice seguente vengono utilizzate le proprietà TimeZoneInfo.Local e TimeZoneInfo.Utc per convertire un orario dal fuso Ora solare USA e Canada orientale e visualizzare il nome del fuso orario nella console.
' Create Eastern Standard Time value and TimeZoneInfo object
Dim estTime As Date = #01/01/2007 00:00:00#
Dim timeZoneName As String = "Eastern Standard Time"
Try
Dim est As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(timeZoneName)
' Convert EST to local time
Dim localTime As Date = TimeZoneInfo.ConvertTime(estTime, est, TimeZoneInfo.Local)
Console.WriteLine("At {0} {1}, the local time is {2} {3}.", _
estTime, _
est, _
localTime, _
IIf(TimeZoneInfo.Local.IsDaylightSavingTime(localTime), _
TimeZoneInfo.Local.DaylightName, _
TimeZoneInfo.Local.StandardName))
' Convert EST to UTC
Dim utcTime As Date = TimeZoneInfo.ConvertTime(estTime, est, TimeZoneInfo.Utc)
Console.WriteLine("At {0} {1}, the time is {2} {3}.", _
estTime, _
est, _
utcTime, _
TimeZoneInfo.Utc.StandardName)
Catch e As TimeZoneNotFoundException
Console.WriteLine("The {0} zone cannot be found in the registry.", _
timeZoneName)
Catch e As InvalidTimeZoneException
Console.WriteLine("The registry contains invalid data for the {0} zone.", _
timeZoneName)
End Try
// Create Eastern Standard Time value and TimeZoneInfo object
DateTime estTime = new DateTime(2007, 1, 1, 00, 00, 00);
string timeZoneName = "Eastern Standard Time";
try
{
TimeZoneInfo est = TimeZoneInfo.FindSystemTimeZoneById(timeZoneName);
// Convert EST to local time
DateTime localTime = TimeZoneInfo.ConvertTime(estTime, est, TimeZoneInfo.Local);
Console.WriteLine("At {0} {1}, the local time is {2} {3}.",
estTime,
est,
localTime,
TimeZoneInfo.Local.IsDaylightSavingTime(localTime) ?
TimeZoneInfo.Local.DaylightName :
TimeZoneInfo.Local.StandardName);
// Convert EST to UTC
DateTime utcTime = TimeZoneInfo.ConvertTime(estTime, est, TimeZoneInfo.Utc);
Console.WriteLine("At {0} {1}, the time is {2} {3}.",
estTime,
est,
utcTime,
TimeZoneInfo.Utc.StandardName);
}
catch (TimeZoneNotFoundException)
{
Console.WriteLine("The {0} zone cannot be found in the registry.",
timeZoneName);
}
catch (InvalidTimeZoneException)
{
Console.WriteLine("The registry contains invalid data for the {0} zone.",
timeZoneName);
}
È necessario accedere sempre al fuso orario locale tramite la proprietà TimeZoneInfo.Local anziché assegnare il fuso orario locale a una variabile oggetto TimeZoneInfo. Analogamente, è necessario accedere sempre all'ora UTC (Coordinated Universal Time) tramite la proprietà TimeZoneInfo.Utc anziché assegnare il fuso UTC a una variabile oggetto TimeZoneInfo. In questo modo si evita che la variabile oggetto TimeZoneInfo venga invalidata da una chiamata al metodo TimeZoneInfo.ClearCachedData.
Compilazione del codice
Per questo esempio è necessario:
Aggiungere un riferimento a System.Core.dll al progetto.
Importare lo spazio dei nomi System con l'istruzione using (richiesto nel codice C#).
Vedere anche
Attività
Procedura: creare un'istanza di un oggetto TimeZoneInfo
Concetti
Ricerca dei fusi orari definiti in un sistema locale