DateTime, DateTimeOffset, TimeSpan ve TimeZoneInfo arasında seçim yapmaChoosing between DateTime, DateTimeOffset, TimeSpan, and TimeZoneInfo

Tarih ve saat bilgilerini kullanan .NET uygulamaları çok farklı ve bu bilgileri çeşitli yollarla kullanabilir..NET applications that use date and time information are very diverse and can use that information in several ways. Tarih ve saat bilgilerinin daha yaygın kullanımları, aşağıdakilerden birini veya daha fazlasını içerir:The more common uses of date and time information include one or more of the following:

  • Yalnızca bir tarihi yansıtmak için zaman bilgileri önemli değildir.To reflect a date only, so that time information is not important.

  • Yalnızca bir zamanı yansıtmak için tarih bilgileri önemli değildir.To reflect a time only, so that date information is not important.

  • Belirli bir zamana ve yere bağlı olmayan bir soyut tarih ve saati yansıtmak için (örneğin, çoğu gün 9:00 ' de gece yarısı açık olan uluslararası bir zincirde depolar).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.).

  • .NET dışındaki kaynaklardan tarih ve saat bilgilerini almak için genellikle tarih ve saat bilgilerinin basit bir veri türünde depolandığı yerdir.To retrieve date and time information from sources outside of .NET, typically where date and time information is stored in a simple data type.

  • Tek bir zaman noktasını benzersiz ve kesin bir şekilde tanımlamak için.To uniquely and unambiguously identify a single point in time. Bazı uygulamalar, bir tarih ve saatin yalnızca konak sisteminde olmasını gerektirir; Diğerleri, sistemlerin genelinde (bir sistemde serileştirilmiş bir tarih, anlamlı olarak seri durumdan çıkarılmış ve dünyanın herhangi bir yerindeki başka bir sistemde kullanılan bir tarih) olmasını gerektirir.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).

  • Birden çok ilgili zamanı korumak için (istek sahibinin yerel saati ve sunucunun bir Web isteği için alındığını alma zamanı).To preserve multiple related times (such as the requestor's local time and the server's time of receipt for a Web request).

  • Zaman içinde tek bir noktayı benzersiz ve kesin bir şekilde tanımlayan bir sonuçla birlikte tarih ve saat aritmetiği gerçekleştirmek için.To perform date and time arithmetic, possibly with a result that uniquely and unambiguously identifies a single point in time.

.NET, hepsi tarih ve saatlerle çalışan uygulamalar oluşturmak için kullanılabilecek DateTime, DateTimeOffset, TimeSpanve TimeZoneInfo türlerini içerir..NET includes the DateTime, DateTimeOffset, TimeSpan, and TimeZoneInfo types, all of which can be used to build applications that work with dates and times.

Not

Bu konu, işlevselliği TimeZoneInfo sınıfında neredeyse tamamen dahil olduğundan TimeZone ele almaz.This topic doesn't discuss TimeZone because its functionality is almost entirely incorporated in the TimeZoneInfo class. Mümkün olduğunda, TimeZone sınıfı yerine TimeZoneInfo sınıfını kullanın.Whenever possible, use the TimeZoneInfo class instead of the TimeZone class.

DateTime yapısıThe DateTime structure

DateTime değeri belirli bir tarih ve saati tanımlar.A DateTime value defines a particular date and time. Bu, tarih ve saatin ait olduğu saat dilimiyle ilgili sınırlı bilgiler sağlayan bir Kind özelliği içerir.It includes a Kind property that provides limited information about the time zone to which that date and time belongs. Kind özelliği tarafından döndürülen DateTimeKind değeri, DateTime değerin yerel saati (DateTimeKind.Local), Eşgüdümlü Evrensel Saat (UTC) (DateTimeKind.Utc) veya belirtilmeyen bir süreyi (DateTimeKind.Unspecified) temsil ettiğini belirtir.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).

DateTime yapısı aşağıdakileri gerçekleştiren uygulamalar için uygundur:The DateTime structure is suitable for applications that do the following:

  • Yalnızca tarihlerle çalışın.Work with dates only.

  • Yalnızca sürelerle çalışın.Work with times only.

  • Soyut tarihler ve saatler ile çalışın.Work with abstract dates and times.

  • Saat dilimi bilgilerinin eksik olduğu tarih ve saatlerle çalışın.Work with dates and times for which time zone information is missing.

  • Yalnızca UTC Tarih ve saatleriyle çalışın.Work with UTC dates and times only.

  • SQL veritabanları gibi .NET dışındaki kaynaklardan tarih ve saat bilgilerini alın.Retrieve date and time information from sources outside of .NET, such as SQL databases. Genellikle, bu kaynaklar tarih ve saat bilgilerini DateTime yapısıyla uyumlu basit bir biçimde depolar.Typically, these sources store date and time information in a simple format that is compatible with the DateTime structure.

  • Tarih ve saat aritmetiği yapın, ancak genel sonuçlarla ilgilenin.Perform date and time arithmetic, but are concerned with general results. Örneğin, belirli bir tarih ve saate altı ay ekleyen bir toplama işleminde, sonucun gün ışığından yararlanma saatine göre ayarlanmasının gerekip gerekmediğini genellikle önemli değildir.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.

Belirli bir DateTime değeri UTC 'yi temsil etmediği takdirde, bu tarih ve saat değeri genellikle taşınabilirliği içinde belirsizdir veya sınırlıdır.Unless a particular DateTime value represents UTC, that date and time value is often ambiguous or limited in its portability. Örneğin, bir DateTime değeri yerel saati gösteriyorsa, bu yerel saat dilimi içinde taşınabilir (yani değer aynı saat diliminde başka bir sistemde seri durumdan çıkarılacağından, bu değer hala kesin bir zamanda tek bir noktayı tanımlar).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). Yerel saat diliminin dışında, bu DateTime değer birden çok yorumlamalar içerebilir.Outside the local time zone, that DateTime value can have multiple interpretations. Değerin Kind özelliği DateTimeKind.Unspecified, daha az taşınabilir: artık aynı saat dilimi içinde ve muhtemelen ilk serileştirildiği sisteme bile belirsizdir.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. Yalnızca bir DateTime değeri UTC 'yi gösteriyorsa, bu değerin değerin kullanıldığı sistem veya saat diliminden bağımsız olarak tek bir zaman noktasını kesin bir şekilde tanımlaması durumunda.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.

Önemli

DateTime verileri kaydederken veya paylaşarak UTC kullanılmalıdır ve DateTime değerin Kind özelliği DateTimeKind.Utcolarak ayarlanmalıdır.When saving or sharing DateTime data, UTC should be used and the DateTime value's Kind property should be set to DateTimeKind.Utc.

DateTimeOffset yapısıThe DateTimeOffset structure

DateTimeOffset yapısı bir tarih ve saat değerini, bu değerin UTC 'den ne kadar farklılık gösterdiğini gösteren bir uzaklığa göre temsil eder.The DateTimeOffset structure represents a date and time value, together with an offset that indicates how much that value differs from UTC. Bu nedenle, değer her zaman kesin olarak tek bir noktayı tanımlar.Thus, the value always unambiguously identifies a single point in time.

DateTimeOffset türü, saat dilimi tanıma ile birlikte DateTime türünün tüm işlevlerini içerir.The DateTimeOffset type includes all of the functionality of the DateTime type along with time zone awareness. Bu, aşağıdakileri gerçekleştiren uygulamalar için uygun hale getirir:This makes it suitable for applications that do the following:

  • Tek bir zaman noktasını benzersiz ve kesin bir şekilde tanımlar.Uniquely and unambiguously identify a single point in time. DateTimeOffset türü, "Şimdi" öğesinin anlamını kesin bir şekilde tanımlamak, işlem sürelerini günlüğe kaydetmek, sistem veya uygulama olaylarının saatlerini günlüğe kaydetmek ve dosya oluşturma ve değiştirme zamanlarını kaydetmek için kullanılabilir.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.

  • Genel Tarih ve saat aritmetiği gerçekleştirin.Perform general date and time arithmetic.

  • Bu süreler iki ayrı değer olarak veya bir yapının iki üyesi olarak depolandığı sürece birden çok ilgili zamanı koruyun.Preserve multiple related times, as long as those times are stored as two separate values or as two members of a structure.

Not

DateTimeOffset değerleri için bu kullanımlar, DateTime değerlerinden çok daha yaygındır.These uses for DateTimeOffset values are much more common than those for DateTime values. Sonuç olarak, DateTimeOffset uygulama geliştirme için varsayılan tarih ve saat türü olarak düşünülmelidir.As a result, DateTimeOffset should be considered the default date and time type for application development.

DateTimeOffset bir değer belirli bir saat dilimine bağlı değildir, ancak çeşitli saat dilimlerden kaynaklanmayabilir.A DateTimeOffset value is not tied to a particular time zone, but can originate from any of a variety of time zones. Bunu göstermek için aşağıdaki örnekte, bir dizi DateTimeOffset değeri (yerel Pasifik standart saati dahil) olan saat dilimleri listelenmektedir.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

Çıktı, bu örnekteki her bir tarih ve saat değerinin en az üç farklı saat dilimine ait olduğunu gösterir.The output shows that each date and time value in this example can belong to at least three different time zones. 6/10/2007 DateTimeOffset değeri, bir tarih ve saat değeri gün ışığından yararlanma saatini temsil ediyorsa, UTC değerinin, kaynak saat diliminin temel UTC denkleye karşılık gelmesi veya görünen adında UTC 'den olan uzaklığa eşit olması gerektiğini gösterir.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. Yani, tek bir DateTimeOffset değeri kendi saat dilimiyle sıkı bir şekilde bağlı olmadığından, gün ışığından yararlanma saatine kadar bir saat diliminin geçişini yansıtmaz.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. Bu, bir DateTimeOffset değerini işlemek için tarih ve saat aritmetiği kullanıldığında özellikle soruna neden olabilir.This can be particularly problematic when date and time arithmetic is used to manipulate a DateTimeOffset value. Tarih ve saat aritmetiğini bir saat diliminin ayarlama kurallarının hesabını alan bir şekilde gerçekleştirme hakkında bir tartışma için bkz. Tarih ve saatlerle aritmetik Işlemler gerçekleştirme.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.

TimeSpan yapısıThe TimeSpan structure

TimeSpan yapısı bir zaman aralığını temsil eder.The TimeSpan structure represents a time interval. Bu iki genel kullanım şunlardır:Its two typical uses are:

  • İki tarih ve saat değeri arasındaki zaman aralığını yansıtır.Reflecting the time interval between two date and time values. Örneğin, bir DateTime değerini başka bir değerden çıkarmak bir TimeSpan değeri döndürür.For example, subtracting one DateTime value from another returns a TimeSpan value.

  • Geçen süreyi ölçme.Measuring elapsed time. Örneğin Stopwatch.Elapsed özelliği, geçen süreyi ölçmeye başlayan Stopwatch metotlarından birine çağrıdan sonra geçen zaman aralığını yansıtan bir TimeSpan değeri döndürür.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.

Bir TimeSpan değeri, bu değer belirli bir güne başvuru olmadan bir saati yansıttığına bir DateTime değerinin yerine konacak olarak da kullanılabilir.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. Bu kullanım, bir tarih başvurusu olmadan saati temsil eden bir TimeSpan değeri döndüren DateTime.TimeOfDay ve DateTimeOffset.TimeOfDay özelliklerine benzerdir.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. Örneğin, TimeSpan yapısı bir deponun günlük açma veya kapatma süresini yansıtacak şekilde veya herhangi bir normal olayın gerçekleştiği süreyi temsil etmek için kullanılabilir.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.

Aşağıdaki örnek, deponun saat dilimini temsil eden bir TimeZoneInfo nesnesi ve depolama açma ve kapatma süreleri için TimeSpan nesneleri içeren bir StoreInfo yapısını tanımlar.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. Bu yapı Ayrıca, deponun Kullanıcı tarafından belirtilen bir anda açık olup olmadığını, yerel saat diliminde olduğunu varsayan IsOpenNow ve IsOpenAtiki yöntem içerir.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

StoreInfo yapısı daha sonra aşağıdaki gibi istemci kodu tarafından kullanılabilir.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

TimeZoneInfo sınıfıThe TimeZoneInfo class

TimeZoneInfo sınıfı, herhangi bir dünya saat dilimini temsil eder ve bir saat dilimindeki tarih ve saatin başka bir saat dilimiyle eşdeğer olarak dönüştürülmesini sağlar.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. TimeZoneInfo sınıfı tarih ve saatlerle çalışmayı mümkün kılar, böylece herhangi bir tarih ve saat değeri belirsiz bir zamanda tek bir noktayı tanımlar.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. TimeZoneInfo sınıfı da genişletilebilir.The TimeZoneInfo class is also extensible. Windows sistemleri için sunulan ve kayıt defterinde tanımlanan saat dilimi bilgilerine bağlı olsa da, özel saat dilimlerini oluşturmayı destekler.Although it depends on time zone information provided for Windows systems and defined in the registry, it supports the creation of custom time zones. Ayrıca, saat dilimi bilgilerinin serileştirilmesi ve serisini kaldırma işlemi de desteklenir.It also supports the serialization and deserialization of time zone information.

Bazı durumlarda TimeZoneInfo sınıftan tam olarak yararlanmak daha fazla geliştirme çalışması gerektirebilir.In some cases, taking full advantage of the TimeZoneInfo class may require further development work. Tarih ve saat değerleri, ait oldukları Saat dilimleriyle sıkı bir şekilde bağlı değilse, daha fazla çalışma gerekir.If date and time values are not tightly coupled with the time zones to which they belong, further work is required. Uygulamanız bir tarih ve saati ilişkili saat dilimiyle bağlamak için bazı mekanizmalar sunmadığı takdirde, belirli bir tarih ve saat değerinin saat diliminden bir ilişkisi olması kolaylaşır.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. Bu bilgileri bağlamak için bir yöntem, hem tarih hem de saat değeri ile ilişkili saat dilimi nesnesini içeren bir sınıf veya yapı tanımlamaktır.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.

.NET 'teki saat dilimi desteğinin avantajlarından yararlanmak, yalnızca tarih ve saat değerinin ait olduğu saat dilimi söz konusu tarih ve saat nesnesi örneği oluşturulduğunda bilindiğinde mümkündür.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. Özellikle Web veya ağ uygulamalarında bu durum genellikle değildir.This is often not the case, particularly in Web or network applications.

Ayrıca bkz.See also