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).

  • 여러 개의 관련 시간(예: 요청자의 현지 시간 및 서버의 웹 요청 수신 시간)을 보존합니다.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에는 DateTime DateTimeOffset 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해당 기능이 클래스에 거의 완전히 통합 되었기 때문에이 항목에서는 설명 하지 않습니다 TimeZoneInfo .This 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구조는 다음 특성 중 하나 이상을 사용 하는 응용 프로그램에 적합 합니다.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 형식을 통해 “now"의 의미를 명확하게 정의하고, 트랜잭션 시간을 기록하고, 시스템 또는 애플리케이션 이벤트의 시간을 기록하고, 파일을 만든 시간과 수정 시간을 기록할 수 있습니다.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.

  • 시간이 두 개의 개별 값으로 저장되거나 한 구조체의 두 멤버로 저장된 경우 관련된 여러 시간을 보존합니다.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

출력은 이 예제의 각 날짜 및 시간 값이 세 개 이상의 표준 시간대에 속할 수 있음을 보여 줍니다.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. 일반적으로 다음 두 가지 용도로 사용됩니다.Its two typical uses are:

  • 두 개의 날짜 및 시간 값의 시간 간격을 반영합니다.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 경과 시간 측정을 시작 하는 메서드 중 하나를 호출한 후 경과 된 시간 간격을 반영 하는 값을 반환 합니다.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의 두 메서드도 포함됩니다.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. 이 정보를 연결하는 한 가지 방법으로 날짜 및 시간 값, 그리고 연결되는 표준 시간대 개체를 둘 다 포함하는 클래스나 구조체를 정의합니다.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. 특히 웹 또는 네트워크 앱에서 표준 시간대를 알 수 없는 경우가 많습니다.The time zone is often not known, particularly in web or network apps.

참조See also