Wybierz między datami DateTime, DateTimeOffset, TimeSpan i TimeZoneInfoChoose between DateTime, DateTimeOffset, TimeSpan, and TimeZoneInfo

Aplikacje platformy .NET mogą używać informacji o dacie i godzinie na kilka sposobów..NET applications can use date and time information in several ways. Poniżej przedstawiono bardziej typowe zastosowania informacji o dacie i godzinie:The more common uses of date and time information include:

  • Aby odzwierciedlić tylko datę, tak aby informacje o czasie nie były ważne.To reflect a date only, so that time information is not important.

  • Aby odzwierciedlić tylko czas, dlatego informacje o dacie nie są ważne.To reflect a time only, so that date information is not important.

  • Aby odzwierciedlić abstrakcyjną datę i godzinę, która nie jest powiązana z określonym czasem i miejscem (na przykład większość magazynów w łańcuchu międzynarodowym otwartym w dniach tygodnia o godzinie 9:00).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.).

  • Aby pobrać informacje o dacie i godzinie ze źródeł poza platformą .NET, zazwyczaj gdzie informacje o dacie i godzinie są przechowywane w prostym typie danych.To retrieve date and time information from sources outside of .NET, typically where date and time information is stored in a simple data type.

  • Aby jednoznacznie i jednoznacznie identyfikować pojedynczy punkt w czasie.To uniquely and unambiguously identify a single point in time. Niektóre aplikacje wymagają, aby data i godzina były niejednoznaczne tylko w systemie hosta.Some applications require that a date and time be unambiguous only on the host system. Inne aplikacje wymagają, aby nie były niejednoznaczne w różnych systemach (to oznacza, że data serializacji w jednym systemie może być zrozumiała i używana w innym systemie w dowolnym miejscu na świecie).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).

  • Aby zachować wiele pokrewnych czasów (takich jak czas lokalny obiektu żądającego i czas odbioru żądania sieci Web przez serwer).To preserve multiple related times (such as the requestor's local time and the server's time of receipt for a Web request).

  • Aby wykonać operacje arytmetyczne daty i godziny, prawdopodobnie z wynikiem, który jednoznacznie i jednoznacznie identyfikuje pojedynczy punkt w czasie.To perform date and time arithmetic, possibly with a result that uniquely and unambiguously identifies a single point in time.

Platforma .NET zawiera DateTime DateTimeOffset typy,, TimeSpan i TimeZoneInfo , które mogą być używane do kompilowania aplikacji, które działają z datami i godzinami..NET includes the DateTime, DateTimeOffset, TimeSpan, and TimeZoneInfo types, all of which can be used to build applications that work with dates and times.

Uwaga

Ten temat nie jest omawiany, TimeZone ponieważ jego funkcjonalność jest niemal całkowicie wbudowana w TimeZoneInfo klasie.This topic doesn't discuss TimeZone because its functionality is almost entirely incorporated in the TimeZoneInfo class. Jeśli to możliwe, użyj TimeZoneInfo klasy zamiast TimeZone klasy.Whenever possible, use the TimeZoneInfo class instead of the TimeZone class.

Struktura DateTimeOffsetThe DateTimeOffset structure

DateTimeOffsetStruktura reprezentuje wartość daty i godziny wraz z przesunięciem wskazującym, ile tej wartości różni się od czasu UTC.The DateTimeOffset structure represents a date and time value, together with an offset that indicates how much that value differs from UTC. Z tego względu wartość zawsze jednoznacznie identyfikuje pojedynczy punkt w czasie.Thus, the value always unambiguously identifies a single point in time.

DateTimeOffsetTyp zawiera wszystkie funkcje DateTime typu wraz z rozpoznawaniem strefy czasowej.The DateTimeOffset type includes all of the functionality of the DateTime type along with time zone awareness. Dzięki temu aplikacje są odpowiednie dla aplikacji, które:This makes it suitable for applications that:

  • Jednoznacznie i jednoznacznie Zidentyfikuj pojedynczy punkt w czasie.Uniquely and unambiguously identify a single point in time. DateTimeOffsetTyp może służyć do jednoznacznego zdefiniowania znaczenia "teraz", rejestrowania czasu transakcji, rejestrowania czasu zdarzeń systemu lub aplikacji oraz rejestrowania czasu tworzenia i modyfikacji plików.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.

  • Wykonaj ogólną arytmetyczną datę i godzinę.Perform general date and time arithmetic.

  • Zachowanie wielu pokrewnych czasów, o ile te czasy są przechowywane jako dwie odrębne wartości lub dwa elementy członkowskie struktury.Preserve multiple related times, as long as those times are stored as two separate values or as two members of a structure.

Uwaga

Te zastosowania w przypadku DateTimeOffset wartości są znacznie bardziej typowe niż te dla DateTime wartości.These uses for DateTimeOffset values are much more common than those for DateTime values. W związku z tym należy rozważyć DateTimeOffset jako domyślny typ daty i godziny dla opracowywania aplikacji.As a result, consider DateTimeOffset as the default date and time type for application development.

DateTimeOffsetWartość nie jest powiązana z konkretną strefą czasową, ale może pochodzić z różnych stref czasowych.A DateTimeOffset value isn't tied to a particular time zone, but can originate from a variety of time zones. W poniższym przykładzie wymieniono strefy czasowe, do których DateTimeOffset może należeć kilka wartości (w tym lokalny czas pacyficzny).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

Dane wyjściowe pokazują, że każda wartość daty i godziny w tym przykładzie może należeć do co najmniej trzech różnych stref czasowych.The output shows that each date and time value in this example can belong to at least three different time zones. DateTimeOffsetWartość 6/10/2007 pokazuje, że jeśli wartość daty i godziny reprezentuje czas letni, jego przesunięcie od czasu UTC nie musi nawet odpowiadać podstawowemu przesunięciu czasu UTC lub przesunięciu z czasu UTC znalezionego w jego nazwie wyświetlanej.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. Ponieważ pojedyncza DateTimeOffset wartość nie jest ściśle połączona ze strefą czasową, nie może odzwierciedlać przejścia strefy czasowej do i od czasu letniego.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. Może to być problematyczne, gdy do manipulowania wartością jest używana arytmetyka daty i godziny DateTimeOffset .This can be problematic when date and time arithmetic is used to manipulate a DateTimeOffset value. Aby zapoznać się z omówieniem sposobu wykonywania operacji arytmetycznych daty i godziny w sposób, który uwzględnia reguły dostosowania strefy czasowej, zobacz wykonywanie obliczeń arytmetycznych z datami i godzinami.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.

Struktura DateTimeThe DateTime structure

DateTimeWartość definiuje określoną datę i godzinę.A DateTime value defines a particular date and time. Zawiera Kind Właściwość, która zawiera ograniczone informacje o strefie czasowej, do której należy ta data i godzina.It includes a Kind property that provides limited information about the time zone to which that date and time belongs. DateTimeKindWartość zwracana przez Kind Właściwość wskazuje DateTime , czy wartość reprezentuje czas lokalny ( DateTimeKind.Local ), uniwersalny czas koordynowany (UTC) ( DateTimeKind.Utc ) lub nieokreślony czas ( 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).

DateTimeStruktura jest odpowiednia dla aplikacji z co najmniej jedną z następujących cech:The DateTime structure is suitable for applications with one or more of the following characteristics:

  • Pracuj tylko z datami.Work with dates only.

  • Pracuj tylko z godzinami.Work with times only.

  • Pracuj z datami i godzinami abstrakcyjnymi.Work with abstract dates and times.

  • Pracuj z datami i godzinami, dla których brakuje informacji o strefie czasowej.Work with dates and times for which time zone information is missing.

  • Pracuj tylko z datami i godzinami UTC.Work with UTC dates and times only.

  • Pobierz informacje o dacie i godzinie ze źródeł poza platformą .NET, takich jak bazy danych SQL.Retrieve date and time information from sources outside of .NET, such as SQL databases. Zwykle te źródła przechowują informacje o dacie i godzinie w prostym formacie zgodnym ze DateTime strukturą.Typically, these sources store date and time information in a simple format that is compatible with the DateTime structure.

  • Wykonaj operacje arytmetyczne daty i godziny, ale są one powiązane z ogólnymi wynikami.Perform date and time arithmetic, but are concerned with general results. Na przykład w operacji dodawania, która dodaje sześć miesięcy do określonej daty i godziny, często nie ma znaczenia, czy wynik jest dostosowywany do czasu letniego.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.

O ile określona DateTime wartość nie reprezentuje czasu UTC, ta wartość daty i godziny jest często niejednoznaczna lub ograniczona w jego przenośności.Unless a particular DateTime value represents UTC, that date and time value is often ambiguous or limited in its portability. Na przykład jeśli DateTime wartość reprezentuje czas lokalny, jest ona przenośna w ramach tej lokalnej strefy czasowej (to oznacza, że jeśli wartość jest deserializowana w innym systemie w tej samej strefie czasowej, ta wartość nadal jednoznacznie identyfikuje pojedynczy punkt w czasie).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). Na zewnątrz lokalnej strefy czasowej ta DateTime wartość może mieć wiele interpretacji.Outside the local time zone, that DateTime value can have multiple interpretations. Jeśli Kind Właściwość Value ma wartość DateTimeKind.Unspecified , jest ona jeszcze mniej przenośna: jest teraz niejednoznaczna w tej samej strefie czasowej i prawdopodobnie nawet w tym samym systemie, w którym została najpierw zserializowana.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. Tylko wtedy DateTime , gdy wartość reprezentuje czas UTC, ta wartość jednoznacznie zidentyfikuje pojedynczy punkt w czasie, niezależnie od systemu lub strefy czasowej, w której jest używana wartość.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.

Ważne

Podczas zapisywania lub udostępniania DateTime danych należy używać czasu UTC, a DateTime Kind Właściwość Value powinna być ustawiona na 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.

Struktura TimeSpanThe TimeSpan structure

TimeSpanStruktura reprezentuje przedział czasu.The TimeSpan structure represents a time interval. Poniżej przedstawiono dwa typowe zastosowania:Its two typical uses are:

  • Odzwierciedlanie interwału czasu między dwiema wartościami daty i godziny.Reflecting the time interval between two date and time values. Na przykład odjęcie jednej DateTime wartości od innej zwraca TimeSpan wartość.For example, subtracting one DateTime value from another returns a TimeSpan value.

  • Pomiar czasu, który upłynął.Measuring elapsed time. Na przykład Stopwatch.Elapsed Właściwość zwraca TimeSpan wartość odzwierciedlającą przedział czasu, który upłynął od wywołania jednej z Stopwatch metod, które zaczynają mierzyć czas, który upłynął.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.

TimeSpanWartość może być również używana jako zamiennik dla DateTime wartości, gdy ta wartość odzwierciedla czas bez odwołania do danego dnia.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. To użycie jest podobne do DateTime.TimeOfDay właściwości i DateTimeOffset.TimeOfDay , które zwracają wartość, TimeSpan która reprezentuje czas bez odwołania do daty.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. Na przykład TimeSpan Struktura może służyć do odzwierciedlenia codziennego otwarcia lub zamknięcia magazynu lub może służyć do reprezentowania czasu, w którym występuje każde zdarzenie regularne.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.

W poniższym przykładzie zdefiniowano StoreInfo strukturę obejmującą TimeSpan obiekty służące do otwierania i zamykania czasu oraz TimeZoneInfo obiekt, który reprezentuje strefę czasową magazynu.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. Struktura zawiera również dwie metody IsOpenNow i IsOpenAt , która wskazuje, czy magazyn jest otwarty w określonym czasie przez użytkownika, który ma być w lokalnej strefie czasowej.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

StoreInfoStrukturę można następnie użyć w kodzie klienta podobnym do poniższego.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

Klasa TimeZoneInfoThe TimeZoneInfo class

TimeZoneInfoKlasa reprezentuje dowolną strefę czasową ziemi i umożliwia konwersję dowolnej daty i godziny w jednej strefie czasowej na jej odpowiednik w innej strefie czasowej.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. TimeZoneInfoKlasa umożliwia pracy z datami i godzinami, tak aby każda wartość daty i godziny jednoznacznie wskazywała pojedynczy punkt w czasie.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. TimeZoneInfoKlasa jest również rozszerzalna.The TimeZoneInfo class is also extensible. Chociaż jest to zależne od informacji o strefie czasowej dla systemów Windows i zdefiniowanych w rejestrze, obsługuje tworzenie niestandardowych stref czasowych.Although it depends on time zone information provided for Windows systems and defined in the registry, it supports the creation of custom time zones. Obsługuje również serializacji i deserializacji informacji o strefie czasowej.It also supports the serialization and deserialization of time zone information.

W niektórych przypadkach korzystanie z pełnej funkcjonalności TimeZoneInfo klasy może wymagać dalszej pracy programistycznej.In some cases, taking full advantage of the TimeZoneInfo class may require further development work. Jeśli wartości daty i godziny nie są ściśle sprzężone z strefami czasowymi, do których należą, wymagana jest dodatkowa prace.If date and time values are not tightly coupled with the time zones to which they belong, further work is required. Jeśli aplikacja nie zapewnia pewnego mechanizmu łączenia daty i godziny ze skojarzoną ze strefą czasową, jest to bardzo proste dla konkretnej wartości daty i godziny, która ma zostać nieskojarzona ze strefą czasową.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. Jedną z metod łączenia tych informacji jest zdefiniowanie klasy lub struktury, która zawiera zarówno wartość daty, jak i skojarzoną z nią obiekt strefy czasowej.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.

Aby skorzystać z obsługi strefy czasowej w programie .NET, należy znać strefę czasową, do której należy wartość daty i godziny, gdy zostanie utworzone wystąpienie tego obiektu daty i godziny.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. Strefa czasowa często nie jest znana, szczególnie w aplikacjach sieci Web lub sieciowych.The time zone is often not known, particularly in web or network apps.

Zobacz takżeSee also