Auswählen zwischen "DateTime", "DateTimeOffset", "TimeSpan" und "TimeZoneInfo"Choosing between DateTime, DateTimeOffset, TimeSpan, and TimeZoneInfo

.NET-Anwendungen, die Datums- und Uhrzeitinformationen verwenden, sind sehr vielfältig und können diese Informationen auf verschiedene Weise verwenden..NET applications that use date and time information are very diverse and can use that information in several ways. Die häufigeren Verwendungsarten von Datums- und Uhrzeitinformationen sind mindestens eine der folgenden:The more common uses of date and time information include one or more of the following:

  • Darstellen eines reinen Datums, damit Zeitinformationen unberücksichtigt bleiben.To reflect a date only, so that time information is not important.

  • Darstellen einer reinen Uhrzeit, damit Datumsinformationen unberücksichtigt bleiben.To reflect a time only, so that date information is not important.

  • Darstellen eines abstrakten Datums mit Uhrzeit, die an keine bestimmte Zeit und keinen bestimmten Ort gebunden sind (z. B. öffnen die meisten Geschäfte einer internationalen Kette an Wochentagen um 9:00 Uhr).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.).

  • Zum Abrufen von Datums-und Uhrzeit Informationen aus Quellen außerhalb von .net, in der Regel, wo Datums-und Uhrzeit Informationen in einem einfachen Datentyp gespeichert sind.To retrieve date and time information from sources outside of .NET, typically where date and time information is stored in a simple data type.

  • Eindeutiges und unzweideutiges Identifizieren eines einzigen Zeitpunkts.To uniquely and unambiguously identify a single point in time. Einige Anwendungen erfordern, dass ein Datum und eine Uhrzeit eindeutig sind, nur auf dem Hostsystem. Andere erfordern, dass sie über Systeme hinweg eindeutig sind (d. h. ein auf dem einen System serialisiertes Datum kann weltweit auf einem anderen System sinnvoll deserialisiert und verwendet werden).Some applications require that a date and time be unambiguous only on the host system; others 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).

  • Erhalten mehrerer verwandter Zeiten (z. B. die lokale Zeit des Anforderers und die Empfangszeit des Servers für eine Webanforderung).To preserve multiple related times (such as the requestor's local time and the server's time of receipt for a Web request).

  • Durchführen von Datums- und Uhrzeitberechnungen, möglicherweise mit einem Ergebnis, das einen einzigen Zeitpunkt eindeutig identifiziert.To perform date and time arithmetic, possibly with a result that uniquely and unambiguously identifies a single point in time.

.NET enthält die DateTimeTypen DateTimeOffset, TimeSpan, und TimeZoneInfo , die alle zum Erstellen von Anwendungen verwendet werden können, die mit Datums-und Uhrzeitangaben arbeiten..NET includes the DateTime, DateTimeOffset, TimeSpan, and TimeZoneInfo types, all of which can be used to build applications that work with dates and times.

Hinweis

In diesem Thema wird TimeZone nicht erläutert, weil seine Funktionalität fast vollständig TimeZoneInfo in die-Klasse integriert ist.This topic doesn't discuss TimeZone because its functionality is almost entirely incorporated in the TimeZoneInfo class. Verwenden Sie nach Möglichkeit die TimeZoneInfo -Klasse anstelle TimeZone der-Klasse.Whenever possible, use the TimeZoneInfo class instead of the TimeZone class.

Die DateTime-StrukturThe DateTime structure

Ein DateTime -Wert definiert ein bestimmtes Datum und eine Uhrzeit.A DateTime value defines a particular date and time. Sie enthält eine Kind -Eigenschaft, die eingeschränkte Informationen über die Zeitzone bereitstellt, zu der dieses Datum und die Uhrzeit gehören.It includes a Kind property that provides limited information about the time zone to which that date and time belongs. Der von der DateTimeKind -Eigenschaft zurückgegebene Kind Wert zeigt an, ob der DateTime -Wert eine lokale Uhrzeit darstellt (DateTimeKind.Local), eine Zeit im UTC-Format (Coordinated Universal Time) (DateTimeKind.Utc) oder eine unspezifische Uhrzeit (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).

Die DateTime -Struktur eignet sich für Anwendungen, die Folgendes können:The DateTime structure is suitable for applications that do the following:

  • Nur mit Daten arbeiten.Work with dates only.

  • Nur mit Uhrzeiten arbeiten.Work with times only.

  • Mit abstrakten Datums- und Uhrzeitwerten arbeiten.Work with abstract dates and times.

  • Mit Datums- und Uhrzeitwerten arbeiten, für die Zeitzoneninformationen fehlen.Work with dates and times for which time zone information is missing.

  • Nur mit UTC-Datums- und Uhrzeitwerten arbeiten.Work with UTC dates and times only.

  • Abrufen von Datums-und Uhrzeit Informationen aus Quellen außerhalb von .net (z. b. SQL-Datenbanken).Retrieve date and time information from sources outside of .NET, such as SQL databases. In der Regel speichern diese Quellen Datums- und Uhrzeitinformationen in einem einfachen Format, das mit der DateTime -Struktur kompatibel ist.Typically, these sources store date and time information in a simple format that is compatible with the DateTime structure.

  • Arithmetische Operationen mit Datums- und Uhrzeitwerten durchführen, wobei aber allgemeine Ergebnisse von Belang sind.Perform date and time arithmetic, but are concerned with general results. Beispielsweise ist es bei einer Additionsoperation, bei der einem bestimmten Datum und einer Uhrzeit sechs Monate hinzuaddiert werden, oft nicht wichtig, ob das Ergebnis hinsichtlich der Sommerzeit angepasst wird.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.

Wenn nicht ein bestimmter DateTime -Wert UTC darstellt, ist dieser Datums- und Uhrzeitwert häufig mehrdeutig oder in seiner Portierbarkeit eingeschränkt.Unless a particular DateTime value represents UTC, that date and time value is often ambiguous or limited in its portability. Wenn z. B. ein DateTime -Wert die lokale Uhrzeit darstellt, ist er innerhalb dieser lokalen Zeitzone portierbar (d. h., wenn der Wert auf einem anderen System in derselben Zeitzone deserialisiert wird, identifiziert dieser Wert immer noch eindeutig einen einzigen Zeitpunkt).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). Außerhalb der lokalen Zeitzone kann dieser DateTime -Wert über mehrere Interpretationen verfügen.Outside the local time zone, that DateTime value can have multiple interpretations. Wenn die Kind -Eigenschaft des Werts DateTimeKind.Unspecifiedist, ist er sogar noch weniger portierbar: Er ist jetzt innerhalb derselben Zeitzone mehrdeutig und möglicherweise sogar auf dem selben System, auf dem er erstmalig serialisiert wurde.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. Nur wenn ein DateTime -Wert eine UTC-Zeit darstellt, identifiziert dieser Wert eindeutig einen einzigen Zeitpunkt, unabhängig vom System oder der Zeitzone, in der der Wert verwendet wird.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.

Wichtig

Beim Speichern oder Freigeben von DateTime -Daten sollte UTC verwendet werden, und die DateTime - Kind -Eigenschaft des Werts sollte auf DateTimeKind.Utcfestgelegt werden.When saving or sharing DateTime data, UTC should be used and the DateTime value's Kind property should be set to DateTimeKind.Utc.

Die DateTimeOffset-StrukturThe DateTimeOffset structure

Die DateTimeOffset -Struktur stellt einen Datums- und Uhrzeitwert zusammen mit einem Offset dar, der angibt, um wie viel dieser Wert von UTC abweicht.The DateTimeOffset structure represents a date and time value, together with an offset that indicates how much that value differs from UTC. Somit identifiziert der Wert immer eindeutig einen einzigen Zeitpunkt.Thus, the value always unambiguously identifies a single point in time.

Der DateTimeOffset -Typ bietet die gesamte Funktionalität des DateTime -Typs plus Unterstützung von Zeitzonen.The DateTimeOffset type includes all of the functionality of the DateTime type along with time zone awareness. Dies eignet sich für Anwendungen, die Folgendes ausführen:This makes it suitable for applications that do the following:

  • Eindeutiges und unzweideutiges Identifizieren eines einzigen Zeitpunkts.Uniquely and unambiguously identify a single point in time. Der DateTimeOffset -Typ kann zur eindeutigen Definition der Bedeutung von "jetzt" verwendet werden, um Transaktionszeiten zu protokollieren, die Zeiten von System- oder Anwendungsereignissen zu protokollieren und um die Zeiten der Erstellung und Änderung von Dateien aufzuzeichnen.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.

  • Ausführen von allgemeinen Datums- und UhrzeitberechnungenPerform general date and time arithmetic.

  • Erhalten mehrerer verwandter Uhrzeiten, solange diese Zeiten als zwei gesonderte Werte oder als zwei Member einer Struktur gespeichert werden.Preserve multiple related times, as long as those times are stored as two separate values or as two members of a structure.

Hinweis

Diese Verwendungsarten für DateTimeOffset -Werte sind sehr viel häufiger als die für DateTime -Werte.These uses for DateTimeOffset values are much more common than those for DateTime values. Demzufolge sollte DateTimeOffset als Standardtyp für Datum und Uhrzeit für die Anwendungsentwicklung angesehen werden.As a result, DateTimeOffset should be considered the default date and time type for application development.

Ein DateTimeOffset -Wert ist nicht an eine bestimmte Zeitzone gebunden, kann aber aus jeder der zahlreichen Zeitzonen stammen.A DateTimeOffset value is not tied to a particular time zone, but can originate from any of a variety of time zones. Um dies zu veranschaulichen, listet das folgende Beispiel die Zeitzonen auf, zu denen eine Reihe von DateTimeOffset -Werten (einschließlich eines Werts in lokaler Pacific Normalzeit) gehören können.To illustrate this, 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

Die Ausgabe zeigt, dass jeder Datums- und Uhrzeitwert in diesem Beispiel zu mindestens drei verschiedenen Zeitzonen gehören kann.The output shows that each date and time value in this example can belong to at least three different time zones. Der DateTimeOffset -Wert "6/10/2007" zeigt, dass, wenn ein Datums- und Uhrzeitwert eine Sommerzeit darstellt, sein Offset von UTC noch nicht einmal unbedingt dem UTC-Basisoffset der Ursprungszeitzone oder dem in seinem Anzeigenamen vorgefundenen Offset von UTC entsprechen muss.The DateTimeOffset value of 6/10/2007 shows that if a date and time value represents a daylight saving time, its offset from UTC does not even necessarily correspond to the originating time zone's base UTC offset or to the offset from UTC found in its display name. Dies bedeutet, dass, weil ein einzelner DateTimeOffset -Wert nicht eng mit seiner Zeitzone verknüpft ist, er nicht den Übergang einer Zeitzone zur und aus der Sommerzeit wiedergeben kann.This means that, because a single DateTimeOffset value is not tightly coupled with its time zone, it cannot reflect a time zone's transition to and from daylight saving time. Dies kann besonders problematisch sein, wenn ein DateTimeOffset -Wert mithilfe von Datums- und Uhrzeitberechnungen manipuliert wird.This can be particularly problematic when date and time arithmetic is used to manipulate a DateTimeOffset value. (Eine Erläuterung der Durchführung von Datums- und Uhrzeitberechnungen auf eine Weise, die die Anpassungsregeln einer Zeitzone berücksichtigt, finden Sie unter Performing arithmetic operations with dates and times.)(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.)

Die TimeSpan-StrukturThe TimeSpan structure

Die TimeSpan -Struktur stellt ein Zeitintervall dar.The TimeSpan structure represents a time interval. Sein zwei typischen Anwendungsmöglichkeiten sind:Its two typical uses are:

  • Darstellen des Zeitintervalls zwischen zwei Datums- und Uhrzeitwerten.Reflecting the time interval between two date and time values. Beispielsweise gibt die Subtraktion eines DateTime -Werts von einem anderen einen TimeSpan -Wert zurück.For example, subtracting one DateTime value from another returns a TimeSpan value.

  • Messen der verstrichenen Zeit.Measuring elapsed time. Beispielsweise gibt die Stopwatch.Elapsed -Eigenschaft einen TimeSpan Wert zurück, der das Zeitintervall angibt, das seit dem Stopwatch Aufruf einer der Methoden, die die verstrichene Zeit zu messen beginnen, verstrichen ist.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.

Ein TimeSpan -Wert kann auch als Ersatz für einen DateTime -Wert verwendet werden, wenn dieser Wert eine Uhrzeit ohne Verweis auf einen bestimmten Tag widerspiegelt.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. Diese Verwendung ähnelt der DateTime.TimeOfDay -Eigenschaft und der- DateTimeOffset.TimeOfDay Eigenschaft, die TimeSpan einen Wert zurückgeben, der die Uhrzeit ohne Verweis auf ein Datum darstellt.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. Beispielsweise kann die TimeSpan -Struktur verwendet werden, um die täglichen Öffnungszeiten eines Geschäfts darzustellen oder um die Uhrzeit darzustellen, zu der alle regulären Ereignisse auftreten.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.

Das folgende Beispiel definiert eine StoreInfo -Struktur, die TimeSpan -Objekte für Öffnungszeiten von Geschäften enthält sowie ein TimeZoneInfo -Objekt, das die Zeitzone des Geschäfts darstellt.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. Die Struktur enthält außerdem zwei Methoden, IsOpenNow und IsOpenAt, die angeben, ob das Geschäft zu einem vom Benutzer angegebenen Zeitpunkt geöffnet ist, wobei angenommen wird, dass er sich in der lokalen Zeitzone aufhält.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()[local.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 And 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(local.GetAdjustmentRules().Length - 1).DaylightDelta
         End If
         Dim comparisonTime As TimeSpan = time + (offset - tz.BaseUtcOffset).Negate() + (delta - storeDelta).Negate
         Return (comparisonTime >= open And comparisonTime <= close)
      End If
   End Function
End Structure

Die StoreInfo -Struktur kann dann von Clientcode wie folgt verwendet werden.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

Die TimeZoneInfo-KlasseThe TimeZoneInfo class

Die TimeZoneInfo-Klasse stellt eine beliebige Zeitzone der Erde dar und ermöglicht die Konvertierung jeglicher Datums- und Uhrzeitwerte in einer in die entsprechenden Werte in einer anderen Zeitzone.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. Die TimeZoneInfo -Klasse ermöglicht das Arbeiten mit Datums- und Zeitwerten, sodass jeder Datums- und Uhrzeitwert eindeutig einen einzigen Zeitpunkt identifiziert.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. Die TimeZoneInfo -Klasse ist außerdem erweiterbar.The TimeZoneInfo class is also extensible. Obwohl sie von den für Windows-Systeme bereitgestellten und in der Registrierung definierten Zeitzoneninformationen abhängt, unterstützt sie die Erstellung benutzerdefinierter Zeitzonen.Although it depends on time zone information provided for Windows systems and defined in the registry, it supports the creation of custom time zones. Sie unterstützt außerdem die Serialisierung und Deserialisierung von Zeitzoneninformationen.It also supports the serialization and deserialization of time zone information.

In einigen Fällen kann noch weitere Entwicklungsarbeit erforderlich sein, um die TimeZoneInfo -Klasse optimal zu nutzen.In some cases, taking full advantage of the TimeZoneInfo class may require further development work. Wenn die Datums-und Uhrzeitwerte nicht eng mit den Zeitzonen gekoppelt sind, zu denen Sie gehören, sind weitere Schritte erforderlich.If date and time values are not tightly coupled with the time zones to which they belong, further work is required. Wenn Ihre Anwendung keinen Mechanismus zum Verknüpfen eines Datums und einer Uhrzeit mit der zugehörigen Zeitzone bereitstellt, ist es einfach, dass ein bestimmter Datums-und Uhrzeitwert von der Zeitzone getrennt wird.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. Eine Methode zum Verknüpfen dieser Informationen besteht darin, eine Klasse oder Struktur zu definieren, die sowohl den Datums- und Zeitwert als auch sein zugeordnetes Zeitzonenobjekt enthält.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.

Die Zeitzonenunterstützung in .NET kann nur genutzt werden, wenn die Zeitzone, zu der ein Datums- und Uhrzeitwert gehört, bekannt ist, wenn das Datums- und Uhrzeitobjekt instanziiert wird.Taking advantage of time zone support in .NET is possible only if the time zone to which a date and time value belongs is known when that date and time object is instantiated. Dies ist häufig nicht der Fall, insbesondere bei Web-oder Netzwerkanwendungen.This is often not the case, particularly in Web or network applications.

Siehe auchSee also