Procedura: Creare fusi orari senza regole di regolazione

Le informazioni precise sul fuso orario richieste da un'applicazione potrebbero non essere presenti in un particolare sistema per diversi motivi:

  • Il fuso orario non è mai stato definito nel registro del sistema locale.

  • I dati relativi al fuso orario sono stati modificati o rimossi dal registro.

  • Il fuso orario esiste ma non dispone di informazioni accurate sulle regolazioni del fuso orario per un determinato periodo storico.

In questi casi, è possibile chiamare il metodo CreateCustomTimeZone per definire il fuso orario richiesto dall'applicazione. È possibile usare gli overload di questo metodo per creare un fuso orario con o senza regole di rettifica. Se il fuso orario supporta l'ora legale, è possibile definire le regolazioni con regole di rettifica fisse o mobili. (Per le definizioni di questi termini, vedere la sezione "Terminologia dei fusi orari" in Panoramica dei fusi orari).

Importante

I fusi orari personalizzati creati chiamando il metodo CreateCustomTimeZone non vengono aggiunti al registro. È invece possibile accedervi solo tramite il riferimento all'oggetto restituito dalla chiamata al metodo CreateCustomTimeZone.

Questo argomento illustra come creare un fuso orario senza regole di rettifica. Per creare un fuso orario che supporti le regole di rettifica dell'ora legale, vedere Procedura: Creare fusi orari con regole di rettifica.

Per creare un fuso orario senza regole di rettifica

  1. Definire il nome visualizzato del fuso orario.

    Il nome visualizzato segue un formato abbastanza standard in cui l'offset del fuso orario dall'ora UTC (Coordinated Universal Time) è racchiuso tra parentesi ed è seguito da una stringa che identifica il fuso orario, una o più città o uno o più Paesi o aree geografiche nel fuso orario.

  2. Definire il nome dell'ora solare del fuso orario. In genere, questa stringa viene usata anche come identificatore del fuso orario.

  3. Per usare un identificatore diverso dal nome standard del fuso orario, definire l'identificatore del fuso orario.

  4. Creare un'istanza di un oggetto TimeSpan che definisca l'offset del fuso orario dall'ora UTC. I fusi orari con orari successivi all'ora UTC hanno un offset positivo. I fusi orari con orari precedenti all'ora UTC hanno un offset negativo.

  5. Chiamare il metodo TimeZoneInfo.CreateCustomTimeZone(String, TimeSpan, String, String) per creare un'istanza del nuovo fuso orario.

Esempio

L'esempio seguente definisce un fuso orario personalizzato per Mawson, Antartide, che non ha regole di rettifica.

string displayName = "(GMT+06:00) Antarctica/Mawson Time";
string standardName = "Mawson Time";
TimeSpan offset = new TimeSpan(06, 00, 00);
TimeZoneInfo mawson = TimeZoneInfo.CreateCustomTimeZone(standardName, offset, displayName, standardName);
Console.WriteLine("The current time is {0} {1}",
                  TimeZoneInfo.ConvertTime(DateTime.Now, TimeZoneInfo.Local, mawson),
                  mawson.StandardName);
Dim displayName As String = "(GMT+06:00) Antarctica/Mawson Time"
Dim standardName As String = "Mawson Time"
Dim offset As TimeSpan = New TimeSpan(06, 00, 00)
Dim mawson As TimeZoneInfo = TimeZoneInfo.CreateCustomTimeZone(standardName, offset, displayName, standardName)
Console.WriteLine("The current time is {0} {1}", _
                  TimeZoneInfo.ConvertTime(Date.Now, TimeZoneInfo.Local, mawson), _
                  mawson.StandardName)

La stringa assegnata alla proprietà DisplayName segue un formato standard in cui l'offset del fuso orario dall'ora UTC è seguito da una breve descrizione del fuso orario.

Compilazione del codice

L'esempio presenta i requisiti seguenti:

  • Che verranno importati gli spazi dei nomi seguenti:

    using System.Collections.Generic;
    using System.Collections.ObjectModel;
    
    Imports System.Collections.Generic
    Imports System.Collections.ObjectModel
    
    

Vedi anche