Scegliere tra DateTime, DateTimeOffset, TimeSpan e TimeZoneInfoChoose between DateTime, DateTimeOffset, TimeSpan, and TimeZoneInfo

Le applicazioni .NET possono utilizzare le informazioni di data e ora in diversi modi..NET applications can use date and time information in several ways. Gli utilizzi più comuni delle informazioni su data e ora includono:The more common uses of date and time information include:

  • Indicare solo una data, perché le informazioni sull'ora non sono importanti.To reflect a date only, so that time information is not important.

  • Indicare solo un'ora, perché le informazioni sulla data non sono importanti.To reflect a time only, so that date information is not important.

  • Indicare una data e un'ora astratte e non associate a un momento e un luogo specifici. Ad esempio, la maggior parte dei negozi di una catena internazionale apre alle 9.00 di ogni giorno feriale.To reflect an abstract date and time that is not tied to a specific time and place (for example, most stores in an international chain open on weekdays at 9:00 A.M.).

  • Per recuperare informazioni su data e ora da origini esterne a .NET, in genere in cui le informazioni di data e ora vengono archiviate in un tipo di dati semplice.To retrieve date and time information from sources outside of .NET, typically where date and time information is stored in a simple data type.

  • Identificare in modo univoco e senza ambiguità un singolo momento.To uniquely and unambiguously identify a single point in time. Per alcune applicazioni è necessario che la data e l'ora siano non ambigue solo nel sistema host.Some applications require that a date and time be unambiguous only on the host system. Per altre app è necessario che non sia ambiguo tra i sistemi (ovvero, una data serializzata in un sistema può essere deserializzata in modo significativo e usata in un altro sistema in qualsiasi parte del mondo).Other apps require that it be unambiguous across systems (that is, a date serialized on one system can be meaningfully deserialized and used on another system anywhere in the world).

  • Mantenere più ore correlate, ad esempio l'ora locale del richiedente e l'ora di ricezione di una richiesta Web nel server.To preserve multiple related times (such as the requestor's local time and the server's time of receipt for a Web request).

  • Eseguire operazioni aritmetiche per date e ore, possibilmente con un risultato che identifichi in modo univoco e senza ambiguità una singolo momento.To perform date and time arithmetic, possibly with a result that uniquely and unambiguously identifies a single point in time.

.NET include i DateTime tipi,, DateTimeOffset TimeSpan e TimeZoneInfo , che possono essere usati per compilare applicazioni che funzionano con date e ore..NET includes the DateTime, DateTimeOffset, TimeSpan, and TimeZoneInfo types, all of which can be used to build applications that work with dates and times.

Nota

Questo argomento non discute TimeZone perché la sua funzionalità è quasi completamente incorporata nella TimeZoneInfo classe.This topic doesn't discuss TimeZone because its functionality is almost entirely incorporated in the TimeZoneInfo class. Quando possibile, usare la TimeZoneInfo classe invece della TimeZone classe.Whenever possible, use the TimeZoneInfo class instead of the TimeZone class.

Struttura DateTimeOffsetThe DateTimeOffset structure

La struttura DateTimeOffset rappresenta un valore di data e ora, insieme a un offset che indica la differenza di tale valore rispetto all'ora UTC.The DateTimeOffset structure represents a date and time value, together with an offset that indicates how much that value differs from UTC. In questo modo, il valore identifica sempre senza ambiguità un singolo momento.Thus, the value always unambiguously identifies a single point in time.

Il tipo DateTimeOffset include tutte le funzionalità del tipo DateTime insieme alla compatibilità del fuso orario.The DateTimeOffset type includes all of the functionality of the DateTime type along with time zone awareness. Questo lo rende adatto per le applicazioni che:This makes it suitable for applications that:

  • Identificano in modo univoco e non ambiguo un singolo momento.Uniquely and unambiguously identify a single point in time. Il tipo DateTimeOffset può essere usato per definire senza ambiguità il significato di "adesso", per registrare data e ora delle transazioni, del sistema o degli eventi delle applicazioni, nonché registrare data e ora di creazione e modifica dei file.The DateTimeOffset type can be used to unambiguously define the meaning of "now", to log transaction times, to log the times of system or application events, and to record file creation and modification times.

  • Eseguono operazioni aritmetiche su data e ora.Perform general date and time arithmetic.

  • Mantengono più date e ore correlate, purché vengano archiviate come due valori separati o due membri di una struttura.Preserve multiple related times, as long as those times are stored as two separate values or as two members of a structure.

Nota

Questi utilizzi per i valori DateTimeOffset sono molto più comuni di quelli per i valori DateTime .These uses for DateTimeOffset values are much more common than those for DateTime values. Di conseguenza, considerare DateTimeOffset come il tipo di data e ora predefinito per lo sviluppo di applicazioni.As a result, consider DateTimeOffset as the default date and time type for application development.

Un DateTimeOffset valore non è associato a un determinato fuso orario, ma può derivare da diversi fusi orari.A DateTimeOffset value isn't tied to a particular time zone, but can originate from a variety of time zones. L'esempio seguente elenca i fusi orari a cui può appartenere un certo numero di DateTimeOffset valori (inclusa un'ora solare Pacifico locale).The following example lists the time zones to which a number of DateTimeOffset values (including a local Pacific Standard Time) can belong.

using System;
using System.Collections.ObjectModel;

public class TimeOffsets
{
   public static void Main()
   {
      DateTime thisDate = new DateTime(2007, 3, 10, 0, 0, 0);
      DateTime dstDate = new DateTime(2007, 6, 10, 0, 0, 0);
      DateTimeOffset thisTime;

      thisTime = new DateTimeOffset(dstDate, new TimeSpan(-7, 0, 0));
      ShowPossibleTimeZones(thisTime);

      thisTime = new DateTimeOffset(thisDate, new TimeSpan(-6, 0, 0));
      ShowPossibleTimeZones(thisTime);

      thisTime = new DateTimeOffset(thisDate, new TimeSpan(+1, 0, 0));
      ShowPossibleTimeZones(thisTime);
   }

   private static void ShowPossibleTimeZones(DateTimeOffset offsetTime)
   {
      TimeSpan offset = offsetTime.Offset;
      ReadOnlyCollection<TimeZoneInfo> timeZones;

      Console.WriteLine("{0} could belong to the following time zones:",
                        offsetTime.ToString());
      // Get all time zones defined on local system
      timeZones = TimeZoneInfo.GetSystemTimeZones();
      // Iterate time zones
      foreach (TimeZoneInfo timeZone in timeZones)
      {
         // Compare offset with offset for that date in that time zone
         if (timeZone.GetUtcOffset(offsetTime.DateTime).Equals(offset))
            Console.WriteLine("   {0}", timeZone.DisplayName);
      }
      Console.WriteLine();
   }
}
// This example displays the following output to the console:
//       6/10/2007 12:00:00 AM -07:00 could belong to the following time zones:
//          (GMT-07:00) Arizona
//          (GMT-08:00) Pacific Time (US & Canada)
//          (GMT-08:00) Tijuana, Baja California
//
//       3/10/2007 12:00:00 AM -06:00 could belong to the following time zones:
//          (GMT-06:00) Central America
//          (GMT-06:00) Central Time (US & Canada)
//          (GMT-06:00) Guadalajara, Mexico City, Monterrey - New
//          (GMT-06:00) Guadalajara, Mexico City, Monterrey - Old
//          (GMT-06:00) Saskatchewan
//
//       3/10/2007 12:00:00 AM +01:00 could belong to the following time zones:
//          (GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna
//          (GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague
//          (GMT+01:00) Brussels, Copenhagen, Madrid, Paris
//          (GMT+01:00) Sarajevo, Skopje, Warsaw, Zagreb
//          (GMT+01:00) West Central Africa
Imports System.Collections.ObjectModel

Module TimeOffsets
    Public Sub Main()
        Dim thisTime As DateTimeOffset

        thisTime = New DateTimeOffset(#06/10/2007#, New TimeSpan(-7, 0, 0))
        ShowPossibleTimeZones(thisTime)

        thisTime = New DateTimeOffset(#03/10/2007#, New TimeSpan(-6, 0, 0))
        ShowPossibleTimeZones(thisTime)

        thisTime = New DateTimeOffset(#03/10/2007#, New TimeSpan(+1, 0, 0))
        ShowPossibleTimeZones(thisTime)
    End Sub

    Private Sub ShowPossibleTimeZones(offsetTime As DateTimeOffset)
        Dim offset As TimeSpan = offsetTime.Offset
        Dim timeZones As ReadOnlyCollection(Of TimeZoneInfo)

        Console.WriteLine("{0} could belong to the following time zones:", _
                          offsetTime.ToString())
        ' Get all time zones defined on local system
        timeZones = TimeZoneInfo.GetSystemTimeZones()
        ' Iterate time zones
        For Each timeZone As TimeZoneInfo In timeZones
            ' Compare offset with offset for that date in that time zone
            If timeZone.GetUtcOffset(offsetTime.DateTime).Equals(offset) Then
                Console.WriteLine("   {0}", timeZone.DisplayName)
            End If
        Next
        Console.WriteLine()
    End Sub
End Module
' This example displays the following output to the console:
'       6/10/2007 12:00:00 AM -07:00 could belong to the following time zones:
'          (GMT-07:00) Arizona
'          (GMT-08:00) Pacific Time (US & Canada)
'          (GMT-08:00) Tijuana, Baja California
'       
'       3/10/2007 12:00:00 AM -06:00 could belong to the following time zones:
'          (GMT-06:00) Central America
'          (GMT-06:00) Central Time (US & Canada)
'          (GMT-06:00) Guadalajara, Mexico City, Monterrey - New
'          (GMT-06:00) Guadalajara, Mexico City, Monterrey - Old
'          (GMT-06:00) Saskatchewan
'       
'       3/10/2007 12:00:00 AM +01:00 could belong to the following time zones:
'          (GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna
'          (GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague
'          (GMT+01:00) Brussels, Copenhagen, Madrid, Paris
'          (GMT+01:00) Sarajevo, Skopje, Warsaw, Zagreb
'          (GMT+01:00) West Central Africa

L'output mostra che ogni valore di data e ora nell'esempio può appartenere almeno a tre fusi orari diversi.The output shows that each date and time value in this example can belong to at least three different time zones. Il DateTimeOffset valore 6/10/2007 indica che se un valore di data e ora rappresenta un'ora legale, l'offset dall'ora UTC non corrisponde necessariamente all'offset UTC di base del fuso orario di origine o all'offset dall'ora UTC trovato nel nome visualizzato.The DateTimeOffset value of 6/10/2007 shows that if a date and time value represents a daylight saving time, its offset from UTC doesn't even necessarily correspond to the originating time zone's base UTC offset or to the offset from UTC found in its display name. Poiché un singolo DateTimeOffset valore non è strettamente associato al fuso orario, non può riflettere la transizione di un fuso orario da e verso l'ora legale.Because a single DateTimeOffset value isn't tightly coupled with its time zone, it can't reflect a time zone's transition to and from daylight saving time. Questa operazione può risultare problematica quando si utilizza l'aritmetica di data e ora per modificare un DateTimeOffset valore.This can be problematic when date and time arithmetic is used to manipulate a DateTimeOffset value. Per informazioni su come eseguire operazioni aritmetiche di data e ora in modo che tenga conto delle regole di rettifica del fuso orario, vedere esecuzione di operazioni aritmetiche con date e ore.For a discussion of how to perform date and time arithmetic in a way that takes account of a time zone's adjustment rules, see Performing arithmetic operations with dates and times.

Struttura DateTimeThe DateTime structure

Un valore DateTime definisce una data e un'ora specifiche.A DateTime value defines a particular date and time. Include una Kind proprietà che fornisce informazioni limitate sul fuso orario a cui appartengono la data e l'ora.It includes a Kind property that provides limited information about the time zone to which that date and time belongs. 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).The DateTimeKind value returned by the Kind property indicates whether the DateTime value represents the local time (DateTimeKind.Local), Coordinated Universal Time (UTC) (DateTimeKind.Utc), or an unspecified time (DateTimeKind.Unspecified).

La DateTime struttura è adatta per le applicazioni con una o più delle caratteristiche seguenti:The DateTime structure is suitable for applications with one or more of the following characteristics:

  • Usano solo date.Work with dates only.

  • Usano solo ore.Work with times only.

  • Usano date e ore astratte.Work with abstract dates and times.

  • Usano date e ore per le quali mancano informazioni sul fuso orario.Work with dates and times for which time zone information is missing.

  • Usano solo date e ore UTC.Work with UTC dates and times only.

  • Recuperare informazioni su data e ora da origini esterne a .NET, ad esempio i database SQL.Retrieve date and time information from sources outside of .NET, such as SQL databases. In genere, queste origini archiviano le informazioni su data e ora in un formato semplice, compatibile con la struttura DateTime .Typically, these sources store date and time information in a simple format that is compatible with the DateTime structure.

  • Eseguono operazioni aritmetiche su date e ore, ma con particolare attenzione ai risultati generali.Perform date and time arithmetic, but are concerned with general results. 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.For example, in an addition operation that adds six months to a particular date and time, it is often not important whether the result is adjusted for daylight saving time.

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à.Unless a particular DateTime value represents UTC, that date and time value is often ambiguous or limited in its portability. 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à.For example, if a DateTime value represents the local time, it is portable within that local time zone (that is, if the value is deserialized on another system in the same time zone, that value still unambiguously identifies a single point in time). Al di fuori del fuso orario locale, tale valore DateTime è soggetto a più interpretazioni.Outside the local time zone, that DateTime value can have multiple interpretations. 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.If the value's Kind property is DateTimeKind.Unspecified, it is even less portable: it is now ambiguous within the same time zone and possibly even on the same system on which it was first serialized. 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.Only if a DateTime value represents UTC does that value unambiguously identify a single point in time regardless of the system or time zone in which the value is used.

Importante

Quando si salvano o condividono dati DateTime , è consigliabile usare UTC e la proprietà DateTime del valore Kind deve essere impostata su DateTimeKind.Utc.When saving or sharing DateTime data, UTC should be used and the DateTime value's Kind property should be set to DateTimeKind.Utc.

Struttura TimeSpanThe TimeSpan structure

La struttura TimeSpan rappresenta un intervallo di tempo.The TimeSpan structure represents a time interval. Ecco i due utilizzi tipici:Its two typical uses are:

  • Indicare l'intervallo di tempo tra due valori di data e ora.Reflecting the time interval between two date and time values. Ad esempio, la sottrazione di un valore DateTime da un altro restituisce un valore TimeSpan .For example, subtracting one DateTime value from another returns a TimeSpan value.

  • Misurare il tempo trascorso.Measuring elapsed time. Ad esempio, la Stopwatch.Elapsed proprietà restituisce un TimeSpan valore che riflette l'intervallo di tempo trascorso dalla chiamata a uno dei Stopwatch metodi che inizia a misurare il tempo trascorso.For example, the Stopwatch.Elapsed property returns a TimeSpan value that reflects the time interval that has elapsed since the call to one of the Stopwatch methods that begins to measure elapsed time.

Un TimeSpan valore può essere usato anche come sostituzione per un DateTime valore quando tale valore riflette un'ora senza riferimento a un giorno specifico.A TimeSpan value can also be used as a replacement for a DateTime value when that value reflects a time without reference to a particular day. Questo utilizzo è simile alle DateTime.TimeOfDay proprietà e DateTimeOffset.TimeOfDay , che restituiscono un TimeSpan valore che rappresenta l'ora senza riferimento a una data.This usage is similar to the DateTime.TimeOfDay and DateTimeOffset.TimeOfDay properties, which return a TimeSpan value that represents the time without reference to a date. 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.For example, the TimeSpan structure can be used to reflect a store's daily opening or closing time, or it can be used to represent the time at which any regular event occurs.

L'esempio seguente definisce una struttura StoreInfo che include oggetti TimeSpan per le ore di apertura e di chiusura di un negozio, nonché un oggetto TimeZoneInfo che rappresenta il fuso orario del negozio.The following example defines a StoreInfo structure that includes TimeSpan objects for store opening and closing times, as well as a TimeZoneInfo object that represents the store's time zone. La struttura include anche due metodi, IsOpenNow e IsOpenAt, che indicano se il negozio è aperto a un'ora specificata dall'utente, che si suppone si trovi nel fuso orario locale.The structure also includes two methods, IsOpenNow and IsOpenAt, that indicates whether the store is open at a time specified by the user, who is assumed to be in the local time zone.

using System;

public struct StoreInfo
{
   public String store;
   public TimeZoneInfo tz;
   public TimeSpan open;
   public TimeSpan close;

   public bool IsOpenNow()
   {
      return IsOpenAt(DateTime.Now.TimeOfDay);
   }

   public bool IsOpenAt(TimeSpan time)
   {
      TimeZoneInfo local = TimeZoneInfo.Local;
      TimeSpan offset = TimeZoneInfo.Local.BaseUtcOffset;

      // Is the store in the same time zone?
      if (tz.Equals(local)) {
         return time >= open & time <= close;
      }
      else {
         TimeSpan delta = TimeSpan.Zero;
         TimeSpan storeDelta = TimeSpan.Zero;

         // Is it daylight saving time in either time zone?
         if (local.IsDaylightSavingTime(DateTime.Now.Date + time))
            delta = local.GetAdjustmentRules()[local.GetAdjustmentRules().Length - 1].DaylightDelta;

         if (tz.IsDaylightSavingTime(TimeZoneInfo.ConvertTime(DateTime.Now.Date + time, local, tz)))
            storeDelta = tz.GetAdjustmentRules()[tz.GetAdjustmentRules().Length - 1].DaylightDelta;

         TimeSpan comparisonTime = time + (offset - tz.BaseUtcOffset).Negate() + (delta - storeDelta).Negate();
         return comparisonTime >= open & comparisonTime <= close;
      }
   }
}
Public Structure StoreInfo
    Dim store As String
    Dim tz As TimeZoneInfo
    Dim open As TimeSpan
    Dim close As TimeSpan

    Public Function IsOpenNow() As Boolean
        Return IsOpenAt(Date.Now.TimeOfDay)
    End Function

    Public Function IsOpenAt(time As TimeSpan) As Boolean
        Dim local As TimeZoneInfo = TimeZoneInfo.Local
        Dim offset As TimeSpan = TimeZoneInfo.Local.BaseUtcOffset

        ' Is the store in the same time zone?
        If tz.Equals(local) Then
            Return time >= open AndAlso time <= close
        Else
            Dim delta As TimeSpan = TimeSpan.Zero
            Dim storeDelta As TimeSpan = TimeSpan.Zero

            ' Is it daylight saving time in either time zone?
            If local.IsDaylightSavingTime(Date.Now.Date + time) Then
                delta = local.GetAdjustmentRules(local.GetAdjustmentRules().Length - 1).DaylightDelta
            End If
            If tz.IsDaylightSavingTime(TimeZoneInfo.ConvertTime(Date.Now.Date + time, local, tz))
                storeDelta = tz.GetAdjustmentRules(tz.GetAdjustmentRules().Length - 1).DaylightDelta
            End If
            Dim comparisonTime As TimeSpan = time + (offset - tz.BaseUtcOffset).Negate() + (delta - storeDelta).Negate
            Return (comparisonTime >= open AndAlso comparisonTime <= close)
        End If
    End Function
End Structure

La struttura StoreInfo può quindi essere usata da codice client simile al seguente.The StoreInfo structure can then be used by client code like the following.

public class Example
{
   public static void Main()
   {
      // Instantiate a StoreInfo object.
      var store103 = new StoreInfo();
      store103.store = "Store #103";
      store103.tz = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
      // Store opens at 8:00.
      store103.open = new TimeSpan(8, 0, 0);
      // Store closes at 9:30.
      store103.close = new TimeSpan(21, 30, 0);

      Console.WriteLine("Store is open now at {0}: {1}",
                        DateTime.Now.TimeOfDay, store103.IsOpenNow());
      TimeSpan[] times = { new TimeSpan(8, 0, 0), new TimeSpan(21, 0, 0),
                           new TimeSpan(4, 59, 0), new TimeSpan(18, 31, 0) };
      foreach (var time in times)
         Console.WriteLine("Store is open at {0}: {1}",
                           time, store103.IsOpenAt(time));
   }
}
// The example displays the following output:
//       Store is open now at 15:29:01.6129911: True
//       Store is open at 08:00:00: True
//       Store is open at 21:00:00: False
//       Store is open at 04:59:00: False
//       Store is open at 18:31:00: False
Module Example
    Public Sub Main()
        ' Instantiate a StoreInfo object.
        Dim store103 As New StoreInfo()
        store103.store = "Store #103"
        store103.tz = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")
        ' Store opens at 8:00.
        store103.open = new TimeSpan(8, 0, 0)
        ' Store closes at 9:30.
        store103.close = new TimeSpan(21, 30, 0)

        Console.WriteLine("Store is open now at {0}: {1}",
                          Date.Now.TimeOfDay, store103.IsOpenNow())
        Dim times() As TimeSpan = {New TimeSpan(8, 0, 0),
                                    New TimeSpan(21, 0, 0),
                                    New TimeSpan(4, 59, 0),
                                    New TimeSpan(18, 31, 0)}
        For Each time In times
            Console.WriteLine("Store is open at {0}: {1}",
                              time, store103.IsOpenAt(time))
        Next
    End Sub
End Module
' The example displays the following output:
'       Store is open now at 15:29:01.6129911: True
'       Store is open at 08:00:00: True
'       Store is open at 21:00:00: False
'       Store is open at 04:59:00: False
'       Store is open at 18:31:00: False

Classe TimeZoneInfoThe TimeZoneInfo class

La classe TimeZoneInfo class represents any of the Earth's time zones, and enables the conversion of any date and time in one time zone to its equivalent in another time zone.The TimeZoneInfo class represents any of the Earth's time zones, and enables the conversion of any date and time in one time zone to its equivalent in another time zone. La classe TimeZoneInfo permette di usare date e ore in modo che qualsiasi valore di data e ora identifichi un singolo momento senza ambiguità.The TimeZoneInfo class makes it possible to work with dates and times so that any date and time value unambiguously identifies a single point in time. La classe TimeZoneInfo può anche essere estesa.The TimeZoneInfo class is also extensible. Benché dipenda dalle informazioni sul fuso orario fornite per i sistemi Windows e definite nel Registro di sistema, questa classe supporta la creazione di fusi orari personalizzati.Although it depends on time zone information provided for Windows systems and defined in the registry, it supports the creation of custom time zones. Supporta anche la serializzazione e la deserializzazione delle informazioni sul fuso orario.It also supports the serialization and deserialization of time zone information.

In alcuni casi, per sfruttare tutti i vantaggi della classe TimeZoneInfo possono essere necessarie attività aggiuntive di sviluppo.In some cases, taking full advantage of the TimeZoneInfo class may require further development work. Se i valori di data e ora non sono strettamente collegati ai fusi orari a cui appartengono, è necessario ulteriore lavoro.If date and time values are not tightly coupled with the time zones to which they belong, further work is required. A meno che l'applicazione non fornisca un meccanismo per collegare una data e un'ora al fuso orario associato, è facile che un determinato valore di data e ora venga dissociato dal fuso orario.Unless your application provides some mechanism for linking a date and time with its associated time zone, it's easy for a particular date and time value to become disassociated from its time zone. Un metodo per collegare queste informazioni consiste nel definire una classe o una struttura che contiene sia i valori di data e ora sia l'oggetto fuso orario associato.One method of linking this information is to define a class or structure that contains both the date and time value and its associated time zone object.

Per sfruttare i vantaggi del supporto dei fusi orari in .NET, è necessario avere a disposizione il fuso orario a cui appartiene un valore di data e ora quando viene creata un'istanza dell'oggetto data e ora.To take advantage of time zone support in .NET, you must know the time zone to which a date and time value belongs when that date and time object is instantiated. Il fuso orario è spesso sconosciuto, in particolare nelle app Web o di rete.The time zone is often not known, particularly in web or network apps.

Vedere ancheSee also