sabato 25 marzo 2017

Struttura DateTime e TimeSpan

Un valore DateTime definisce una data e un'ora specifiche. A partire dalla versione 2.0, .NET Framework include la proprietà Kind che fornisce informazioni limitate sul fuso orario cui appartengono la data e l'ora. Il valore DateTimeKind restituito dalla proprietà Kind indica se il valore DateTime rappresenta l'ora locale (DateTimeKind.Local), l'ora UTC (Coordinated Universal Time) (DateTimeKind.Utc) o un'ora non specificata (DateTimeKind.Unspecified).
                         
                             Risultati immagini per utc time

La struttura DateTime è adatta per le applicazioni che hanno le caratteristiche seguenti:


  • Usano solo date.
  • Usano solo ore.
  • Usano date e ore astratte.
  • Usano date e ore per le quali mancano informazioni sul fuso orario.
  • Usano solo date e ore UTC.
  • Recuperano informazioni su data e ora da origini esterne a .NET Framework, come i database SQL. In genere, queste origini archiviano le informazioni su data e ora in un formato semplice, compatibile con la struttura DateTime.
  • Eseguono operazioni aritmetiche su date e ore, ma con particolare attenzione ai risultati generali. Ad esempio, in un'operazione di addizione che aggiunge sei mesi a una data e un'ora specifiche, spesso non è importante se il risultato viene adattato per l'ora legale.

A meno che un determinato valore DateTime non rappresenti un'ora UTC, il valore di data e ora è spesso ambiguo e limitato in fatto di portabilità. Ad esempio, se un valore DateTime rappresenta l'ora locale, è portabile solo all'interno del fuso orario locale. Di conseguenza, se il valore viene deserializzato in un altro sistema con lo stesso fuso orario, identifica comunque un singolo momento senza ambiguità. Al di fuori del fuso orario locale, tale valore DateTime è soggetto a più interpretazioni. Se la proprietà Kind del valore è DateTimeKind.Unspecified, il valore è ancora meno portabile, in quanto è ora ambiguo all'interno dello stesso fuso orario e probabilmente anche nello stesso sistema in cui è stato inizialmente serializzato. Solo se un valore DateTime rappresenta un'ora UTC, identifica senza ambiguità un singolo momento, indipendentemente dal sistema o dal fuso orario in cui viene usato.

La struttura TimeSpan rappresenta un intervallo di tempo. Ecco i due utilizzi tipici:

  • Indicare l'intervallo di tempo tra due valori di data e ora. Ad esempio, la sottrazione di un valore DateTime da un altro restituisce un valore TimeSpan.
  • Misurare il tempo trascorso. Ad esempio, la proprietà Stopwatch.Elapsed restituisce un valore TimeSpan che indica l'intervallo di tempo trascorso dalla chiamata a uno dei metodi Stopwatch che inizia a misurare il tempo trascorso.

Un valore TimeSpan può essere usato anche come sostituzione per un valore DateTime quando tale valore indica un momento senza riferimento a una determinata ora del giorno. Questo utilizzo è simile alle proprietà DateTime.TimeOfDay e DateTimeOffset.TimeOfDay, che restituiscono un valore TimeSpan che rappresenta l'ora senza riferimento a una data. Ad esempio, la struttura TimeSpan può essere usata per indicare l'ora di apertura o di chiusura di un negozio oppure per rappresentare l'ora a cui si verifica un evento regolare.

Nessun commento:

Posta un commento