Date, ore e fusi orari

Oltre alla struttura di base DateTime, .NET fornisce le classi seguenti che supportano l'uso dei fusi orari:

  • TimeZone

    Usare questa classe con il fuso orario locale del sistema e il fuso UTC (Coordinated Universal Time). La funzionalità della TimeZone classe è ampiamente sostituita dalla TimeZoneInfo classe.

  • TimeZoneInfo

    Utilizzare questa classe per utilizzare qualsiasi fuso orario predefinito in un sistema, per creare nuovi fusi orari e per convertire facilmente date e ore da un fuso orario a un altro. Per i nuovi progetti di sviluppo usare la classe TimeZoneInfo anziché la classe TimeZone.

  • DateTimeOffset

    Usare questa struttura con le date e le ore il cui offset (o differenza) rispetto all'ora UTC è noto. La struttura DateTimeOffset combina un valore di data e ora con l'offset di quell'ora rispetto all'ora UTC. Per via della relazione con l'ora UTC, un singolo valore di data e ora identifica un momento specifico senza ambiguità. Un valore DateTimeOffset risulta pertanto più portabile da un computer a un altro rispetto a un valore DateTime.

A partire da .NET 6, sono disponibili i tipi seguenti:

  • DateOnly

    Usare questa struttura quando si usa un valore che rappresenta solo una data. La data rappresenta l'intero giorno, dall'inizio del giorno alla fine. DateOnly ha un intervallo di 0001-01-01 tramite 9999-12-31. E questo tipo rappresenta la combinazione mese, giorno e anno senza un'ora specifica. Se in precedenza è stato usato un DateTime tipo nel codice per rappresentare una data che ha ignorato l'ora, usare questo tipo nel suo posto.

  • TimeOnly

    Usare questa struttura per rappresentare un'ora senza data. L'ora rappresenta le ore, i minuti e i secondi di un giorno non specifico. TimeOnly ha un intervallo di 00:00:00.0000000 da a 23:59:59.9999999. Questo tipo può essere usato per sostituire DateTime e TimeSpan tipi nel codice quando questi tipi sono stati usati per rappresentare un'ora.

La sezione successiva fornisce le informazioni necessarie per lavorare con i fusi orari e per creare applicazioni con riconoscimento del fuso orario che possono convertire date e ore da un fuso orario a un altro.

Contenuto della sezione

Panoramica sui fusi orari
Illustra concetti, terminologia e problemi relativi alla creazione di applicazioni che dipendono dal fuso orario.

Scelta tra DateTime, DateTimeOffset, TimeSpan e TimeZoneInfo
Viene illustrato quando usare i DateTimetipi , DateTimeOffsete TimeZoneInfo quando si usano i dati di data e ora.

Ricerca dei fusi orari definiti in un sistema locale
Descrive come enumerare i fusi orari che si trovano in un sistema locale.

Procedura: Enumerare i fusi orari presenti in un computer
Include esempi che enumerano i fusi orari definiti nel Registro di sistema di un computer e che consentono agli utenti di selezionare un fuso orario predefinito da un elenco.

Procedura: Accedere agli oggetti UTC e fuso orario locali predefiniti
Descrive come accedere all'ora UTC e al fuso orario locale.

Procedura: Creare un'istanza di un oggetto TimeZoneInfo
Viene descritto come creare un'istanza di un TimeZoneInfo oggetto dal Registro di sistema locale.

Creazione di un'istanza di un oggetto DateTimeOffset
Vengono illustrati i modi in cui è possibile creare un'istanza di un DateTimeOffset oggetto e i modi in cui un DateTime valore può essere convertito in un DateTimeOffset valore.

Procedura: Creare fusi orari senza regole di regolazione
Descrive come creare un fuso orario personalizzato che non supporta la transizione da e verso l'ora legale.

Procedura: Creare fusi orari con regole di regolazione
Descrive come creare un fuso orario personalizzato che supporta una o più transizioni da e verso l'ora legale.

Salvataggio e ripristino dei fusi orari
TimeZoneInfo Descrive il supporto per la serializzazione e la deserializzazione dei dati del fuso orario e illustra alcuni degli scenari in cui è possibile usare queste funzionalità.

Procedura: Salvare i fusi orari in una risorsa incorporata
Descrive come creare un fuso orario personalizzato e salvare le informazioni in un file di risorse.

Procedura: Ripristinare i fusi orari da una risorsa incorporata
Descrive come creare un'istanza di fusi orari personalizzati che sono stati salvati in un file di risorsa incorporata.

Esecuzione di operazioni aritmetiche con date e orari
Illustra i problemi relativi all'aggiunta, alla sottrazione e al confronto DateTime dei DateTimeOffset valori.

Procedura: Usare fusi orari nell'aritmetica di data e ora
Illustra come eseguire operazioni aritmetiche di data e ora che riflettano le regole di adeguamento di un fuso orario.

Conversione tra DateTime e DateTimeOffset
Viene descritto come convertire tra DateTime e DateTimeOffset valori.

Conversione dei tempi tra fusi orari
Descrive come eseguire la conversione di ore tra un fuso orario e un altro.

Procedura: Risolvere i tempi ambigui
Descrive come risolvere un orario ambiguo eseguendone il mapping all'ora solare del fuso orario.

Procedura: Consentire agli utenti di risolvere i tempi ambigui
Descrive come consentire agli utenti di determinare il mapping tra un'ora locale ambigua e l'ora UTC.

Riferimento

System.TimeZoneInfo