Condividi tramite


Procedura: Creare fusi orari senza regole di rettifica

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 di sistema.

  • 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 CreateCustomTimeZone metodo per definire il fuso orario richiesto dall'applicazione. È possibile usare i sovraccarichi di questo metodo per creare un fuso orario con o senza regole di adeguamento. Se il fuso orario supporta l'ora legale, è possibile definire le regolazioni con regole di regolazione fisse o mobili. Per le definizioni di questi termini, vedere la sezione "Terminologia del fuso orario" in Panoramica del fuso orario.

Importante

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

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

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à nel fuso orario o uno o più paesi o aree geografiche nel fuso orario.

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

  3. Se si vuole 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 definisce l'offset del fuso orario rispetto all'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. Chiama il metodo TimeZoneInfo.CreateCustomTimeZone(String, TimeSpan, String, String) per istanziare il nuovo fuso orario.

Esempio

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

string displayName = "(GMT+06:00) Antarctica/Mawson Time";
string standardName = "Mawson Time";
TimeSpan offset = new(06, 00, 00);
TimeZoneInfo mawson = TimeZoneInfo.CreateCustomTimeZone(standardName, offset, displayName, standardName);
Console.WriteLine($"The current time is {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 DisplayName proprietà segue un formato standard in cui l'offset del fuso orario rispetto all'UTC è seguito da una descrizione del fuso orario.

Compilazione del codice

Questo esempio richiede:

  • Che siano importati i seguenti namespace:

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

Vedere anche