DateTime、DateTimeOffset、TimeSpan、TimeZoneInfo のいずれかを選択してくださいChoose between DateTime, DateTimeOffset, TimeSpan, and TimeZoneInfo

.NET アプリケーションでは、さまざまな方法で日付と時刻の情報を使用できます。.NET applications can use date and time information in several ways. 日付と時刻の情報の一般的な使用方法は次のとおりです。The more common uses of date and time information include:

  • 日付のみを反映する (時刻情報は重要ではない)。To reflect a date only, so that time information is not important.

  • 時刻のみを反映する (日付情報は重要ではない)。To reflect a time only, so that date information is not important.

  • 特定の時刻と場所に関連付けられていない抽象日時を反映する (たとえば、国際的チェーンのほとんどのストアは週中の午前 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.).

  • .NET 以外のソースから日付と時刻の情報を取得する場合は。通常、日付と時刻の情報は単純なデータ型に格納されます。To retrieve date and time information from sources outside of .NET, typically where date and time information is stored in a simple data type.

  • 単一の時点を一意かつ明確に識別する。To uniquely and unambiguously identify a single point in time. アプリケーションによっては、ホストシステムでのみ日付と時刻を明確にする必要がある場合があります。Some applications require that a date and time be unambiguous only on the host system. 他のアプリでは、システム間で明確にする必要があります (つまり、あるシステムでシリアル化された日付は、世界中のどこでも別のシステムで明確に逆シリアル化して使用できます)。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).

  • 関連する複数の時刻を保持する (要求元の現地時刻やサーバーの Web 要求受信時刻など)。To preserve multiple related times (such as the requestor's local time and the server's time of receipt for a Web request).

  • 日付と時刻の演算を実行する (これにより、おそらく単一時点が一意かつ明確に識別される)。To perform date and time arithmetic, possibly with a result that uniquely and unambiguously identifies a single point in time.

.Net には、、、、およびの各型が含まれており、これらすべてを使用して DateTimeDateTimeOffset TimeSpan TimeZoneInfo 日付と時刻を操作するアプリケーションを構築できます。.NET includes the DateTime, DateTimeOffset, TimeSpan, and TimeZoneInfo types, all of which can be used to build applications that work with dates and times.

注意

このトピック TimeZone では、その機能がほぼ完全にクラスに組み込まれているため、説明しません TimeZoneInfoThis topic doesn't discuss TimeZone because its functionality is almost entirely incorporated in the TimeZoneInfo class. 可能な限り、クラス TimeZoneInfo の代わりにクラスを使用し TimeZone ます。Whenever possible, use the TimeZoneInfo class instead of the TimeZone class.

DateTime 構造体The DateTime structure

DateTime 値は、特定の日付と時刻を定義します。A DateTime value defines a particular date and time. これには、 Kind その日付と時刻が属するタイムゾーンに関する限られた情報を提供するプロパティが含まれます。It includes a Kind property that provides limited information about the time zone to which that date and time belongs. DateTimeKind プロパティによって返される Kind 値は、 DateTime 値が現地時刻 (DateTimeKind.Local)、世界協定時刻 (UTC) (DateTimeKind.Utc)、指定されていない時刻 (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).

この DateTime 構造は、次の1つ以上の特性を持つアプリケーションに適しています。The DateTime structure is suitable for applications with one or more of the following characteristics:

  • 日付のみを使用するアプリケーション。Work with dates only.

  • 時刻のみを使用するアプリケーション。Work with times only.

  • 抽象日時を使用するアプリケーション。Work with abstract dates and times.

  • タイム ゾーン情報がない日時を使用するアプリケーション。Work with dates and times for which time zone information is missing.

  • UTC 日時のみを使用するアプリケーション。Work with UTC dates and times only.

  • SQL データベースなど、.NET の外部のソースから日付と時刻の情報を取得します。Retrieve date and time information from sources outside of .NET, such as SQL databases. 通常、これらのソースは、 DateTime 構造体と互換性のある単純な形式で日時情報を格納します。Typically, these sources store date and time information in a simple format that is compatible with the DateTime structure.

  • 日付と時刻の演算を実行しますが、これは一般的な結果に関するものです。Perform date and time arithmetic, but are concerned with general results. たとえば、6 カ月を特定の日付と時刻に加算する加算演算では、多くの場合、結果を夏時間に合わせて調整するかどうかは重要ではありません。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.

特定の DateTime 値が UTC を表さない場合、通常、その日付と時刻の値は、あいまいであるか、その移植性に限定されます。Unless a particular DateTime value represents UTC, that date and time value is often ambiguous or limited in its portability. たとえば、 DateTime 値が現地時刻を表す場合、そのローカル タイム ゾーン内で移植することができます (つまり、同じタイム ゾーンにある別のシステムで値が逆シリアル化されると、その値は明確に単一時点を識別します)。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). ローカル タイム ゾーン外では、その DateTime 値は複数の意味を持つ場合があります。Outside the local time zone, that DateTime value can have multiple interpretations. 値の Kind プロパティが DateTimeKind.Unspecifiedの場合、移植性は低くなります。同じタイム ゾーン内であいまいになり、最初にシリアル化したのと同じシステムにおいてさえもあいまいになる可能性があります。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. DateTime 値が UTC を表す場合のみ、値が使用されるシステムまたはタイム ゾーンに関係なく、その値は明確に単一時点を識別します。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.

重要

DateTime データを保存または共有する際、UTC を使用する必要があり、 DateTime 値の Kind プロパティを 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.

DateTimeOffset 構造体The DateTimeOffset structure

DateTimeOffset 構造体は、日付と時刻の値、およびその値と UTC との差異を示すオフセットを表します。The DateTimeOffset structure represents a date and time value, together with an offset that indicates how much that value differs from UTC. そのため、値は常に明確に単一時点を識別します。Thus, the value always unambiguously identifies a single point in time.

DateTimeOffset 型には、 DateTime 型のすべての機能に加え、タイム ゾーンの処理機能が含まれます。The DateTimeOffset type includes all of the functionality of the DateTime type along with time zone awareness. これにより、次のようなアプリケーションに適しています。This makes it suitable for applications that:

  • 単一の時点を一意かつ明確に識別する。Uniquely and unambiguously identify a single point in time. DateTimeOffset 型を使用して、「現在」の意味を明確に定義し、トランザクションの時刻を記録し、システム イベントまたはアプリケーション イベントの時刻を記録し、ファイル作成時刻とファイル変更時刻を記録することができます。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.

  • 一般的な日付と時刻の演算を実行する。Perform general date and time arithmetic.

  • その時刻が 2 つの別々の値または構造体の 2 つのメンバーである場合、関連する複数の時刻を保持する。Preserve multiple related times, as long as those times are stored as two separate values or as two members of a structure.

注意

DateTimeOffset 値のこの用途は、 DateTime 値の用途と比べてはるかに一般的です。These uses for DateTimeOffset values are much more common than those for DateTime values. そのため、 DateTimeOffset アプリケーション開発の既定の日付と時刻の型として考慮してください。As a result, consider DateTimeOffset as the default date and time type for application development.

DateTimeOffset値は特定のタイムゾーンに関連付けられていませんが、さまざまなタイムゾーンから発生することがあります。A DateTimeOffset value isn't tied to a particular time zone, but can originate from a variety of time zones. 次の例では、複数の DateTimeOffset 値 (ローカルの太平洋標準時を含む) が属することができるタイムゾーンを一覧表示します。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

この例の日付と時刻の値はそれぞれ少なくとも 3 つの異なるタイム ゾーンに属することができることを出力は示しています。The output shows that each date and time value in this example can belong to at least three different time zones. DateTimeOffset6/10/2007 の値は、日付と時刻の値が夏時間を表す場合、utc からのオフセットは必ずしも元のタイムゾーンの基本 UTC オフセット、またはその表示名で見つかった utc からのオフセットに対応していないことを示しています。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. 単一の DateTimeOffset 値はそのタイムゾーンと密接に結び付いていないため、夏時間との間のタイムゾーンの遷移を反映することはできません。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. 日付と時刻の演算を使用して値を操作すると、問題が発生する可能性があり DateTimeOffset ます。This can be problematic when date and time arithmetic is used to manipulate a DateTimeOffset value. タイムゾーンの調整規則を考慮する方法で日付と時刻の演算を実行する方法については、「日付と時刻を使用した算術演算の実行」を参照してください。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 構造体The TimeSpan structure

TimeSpan 構造体は、時間間隔を表します。The TimeSpan structure represents a time interval. その 2 つの一般的な用途は、次のとおりです。Its two typical uses are:

  • 2 つの日付と時刻の値の間の時間を反映する。Reflecting the time interval between two date and time values. たとえば、ある値から DateTime 値を減算すると、 TimeSpan 値が返されます。For example, subtracting one DateTime value from another returns a TimeSpan value.

  • 経過時間を測定する。Measuring elapsed time. たとえば、プロパティは、 Stopwatch.Elapsed TimeSpan Stopwatch 経過時間の計測を開始するメソッドの1つを呼び出した後に経過した時間間隔を反映する値を返します。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.

値が TimeSpan DateTime 特定の日を参照せずに時間を反映している場合は、値の置換として値を使用することもできます。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. この使用方法は、プロパティとプロパティに似てい DateTime.TimeOfDay DateTimeOffset.TimeOfDay ます。このプロパティは、 TimeSpan 日付への参照なしで時間を表す値を返します。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. たとえば、 TimeSpan 構造体を使用して、ストアの開店時刻または閉店時刻を反映したり、標準イベントが発生したときの時刻を表したりするために使用できます。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.

以下の例では、開店時刻と閉店時刻用の StoreInfo オブジェクト、およびストアのタイム ゾーンを表す TimeSpan オブジェクトを含む TimeZoneInfo 構造体を定義します。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. 構造体には、 IsOpenNowIsOpenAtという 2 つのメソッドも含まれます。これは、ローカル タイム ゾーンにいると想定されるユーザーによって指定された時刻にストアがオープンするかどうかを示します。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 構造体をクライアント コードで次のように使用できます。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 クラスThe TimeZoneInfo class

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. TimeZoneInfo クラスにより、日付と時刻を使用して、どの日付と時刻の値も明確に単一時点を識別できるようにすることができます。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 クラスを拡張することもできます。The TimeZoneInfo class is also extensible. Windows システムで提供され、レジストリで定義されているタイム ゾーン情報に依存していますが、カスタムのタイム ゾーンの作成もサポートされています。Although it depends on time zone information provided for Windows systems and defined in the registry, it supports the creation of custom time zones. また、タイム ゾーン情報のシリアル化と逆シリアル化もサポートされています。It also supports the serialization and deserialization of time zone information.

場合によっては、 TimeZoneInfo クラスをフル活用するために、開発作業をさらに実行する必要が生じることもあります。In some cases, taking full advantage of the TimeZoneInfo class may require further development work. 日付と時刻の値が属するタイムゾーンと密接に結び付いていない場合は、さらに作業が必要になります。If date and time values are not tightly coupled with the time zones to which they belong, further work is required. アプリケーションで、日付と時刻を関連付けられたタイムゾーンとリンクするメカニズムが提供されていない限り、特定の日付と時刻の値がそのタイムゾーンとの関連付けを解除するのは簡単です。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. この情報をリンクする 1 つの方法は、日付と時刻の値とその関連タイム ゾーン オブジェクトの両方を含むクラスまたは構造体を定義するという方法です。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 でタイムゾーンのサポートを利用するには、日付と時刻のオブジェクトがインスタンス化されるときに、日付と時刻の値が属するタイムゾーンを把握しておく必要があります。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. タイムゾーンは、特に web アプリやネットワークアプリでは不明です。The time zone is often not known, particularly in web or network apps.

関連項目See also