표준 시간대 간 시간 변환Converting times between time zones

날짜 및 시간을 사용하는 애플리케이션에서 표준 시간대 간의 차이를 처리하는 것이 더욱 중요해지고 있습니다.It is becoming increasingly important for any application that works with dates and times to handle differences between time zones. 응용 프로그램은 DateTime 구조에서 사용할 수 있는 시간인 현지 시간으로 모든 시간을 표현할 수 있는 것으로 더 이상 가정할 수 없습니다.An application can no longer assume that all times can be expressed in the local time, which is the time available from the DateTime structure. 예를 들어 동아시아 지역 고객에게는 미국 동부 지역의 현재 시간을 표시하는 웹 페이지의 신뢰성이 떨어집니다.For example, a Web page that displays the current time in the eastern part of the United States will lack credibility to a customer in eastern Asia. 이 항목에서는 표준 시간대를 다른 표준 시간대로 변환 하는 방법 뿐만 아니라 표준 시간대 인식 기능이 제한 된 DateTimeOffset 값을 변환 하는 방법을 설명 합니다.This topic explains how to convert times from one time zone to another, as well as how to convert DateTimeOffset values that have limited time zone awareness.

UTC로 변환Converting to Coordinated Universal Time

UTC(협정 세계시)는 고정밀 원자 시간 표준입니다.Coordinated Universal Time (UTC) is a high-precision, atomic time standard. 전세계의 표준 시간대가 UTC의 양 또는 음 오프셋으로 표시됩니다.The world’s time zones are expressed as positive or negative offsets from UTC. 따라서 UTC는 어느 정도 표준 시간대에서 자유롭거나 중립적인 시간을 제공합니다.Thus, UTC provides a kind of time-zone free or time-zone neutral time. 컴퓨터 간에 날짜 및 시간의 이식성이 중요한 경우 UTC 시간을 사용하는 것이 좋습니다.The use of UTC time is recommended when a date and time's portability across computers is important. 날짜 및 시간을 사용 하는 세부 정보 및 기타 모범 사례 는 .NET Framework에서 DateTime을 사용 하 여 최선의 코딩 방법을 참조 하세요.) 개별 표준 시간대를 UTC로 변환 하면 시간을 보다 쉽게 비교할 수 있습니다.(For details and other best practices using dates and times, see Coding best practices using DateTime in the .NET Framework.) Converting individual time zones to UTC makes time comparisons easy.

참고

DateTimeOffset 구조체를 serialize 하 여 단일 시점을 명확 하 게 나타낼 수도 있습니다.You can also serialize a DateTimeOffset structure to unambiguously represent a single point in time. DateTimeOffset 개체는 날짜 및 시간 값을 UTC에서의 오프셋과 함께 저장 하므로 항상 UTC와의 관계에 있는 특정 시점을 나타냅니다.Because DateTimeOffset objects store a date and time value along with its offset from UTC, they always represent a particular point in time in relationship to UTC.

시간을 UTC로 변환 하는 가장 쉬운 방법은 static``Shared (Visual Basic) TimeZoneInfo.ConvertTimeToUtc(DateTime) 메서드를 호출 하는 것입니다.The easiest way to convert a time to UTC is to call the static (Shared in Visual Basic) TimeZoneInfo.ConvertTimeToUtc(DateTime) method. 메서드에서 수행 하는 정확한 변환은 다음 표와 같이 dateTime 매개 변수의 Kind 속성 값에 따라 다릅니다.The exact conversion performed by the method depends on the value of the dateTime parameter's Kind property, as the following table shows.

DateTime.Kind 변환Conversion
DateTimeKind.Local 현지 시간을 UTC로 변환합니다.Converts local time to UTC.
DateTimeKind.Unspecified dateTime 매개 변수가 현지 시간인 것으로 가정하고 현지 시간을 UTC로 변환합니다.Assumes the dateTime parameter is local time and converts local time to UTC.
DateTimeKind.Utc 변경하지 않은 dateTime 매개 변수를 반환합니다.Returns the dateTime parameter unchanged.

다음 코드에서는 현재 현지 시간을 UTC로 변환하고 그 결과를 콘솔에 표시합니다.The following code converts the current local time to UTC and displays the result to the console.

DateTime dateNow = DateTime.Now;
Console.WriteLine("The date and time are {0} UTC.", 
                   TimeZoneInfo.ConvertTimeToUtc(dateNow));
Dim dateNow As Date = Date.Now      
Console.WriteLine("The date and time are {0} UTC.", _
                  TimeZoneInfo.ConvertTimeToUtc(dateNow))

날짜 및 시간 값이 현지 시간이 나 UTC를 나타내지 않는 경우 ToUniversalTime 메서드에서 잘못 된 결과를 반환할 수 있습니다.If the date and time value does not represent either the local time or UTC, the ToUniversalTime method will likely return an erroneous result. 그러나 TimeZoneInfo.ConvertTimeToUtc 메서드를 사용 하 여 지정 된 표준 시간대의 날짜 및 시간을 변환할 수 있습니다.However, you can use the TimeZoneInfo.ConvertTimeToUtc method to convert the date and time from a specified time zone. 대상 표준 시간대를 나타내는 TimeZoneInfo 개체를 검색 하는 방법에 대 한 자세한 내용은 로컬 시스템에 정의 된 표준 시간대 찾기를 참조 하십시오. 다음 코드는 TimeZoneInfo.ConvertTimeToUtc 메서드를 사용 하 여 동부 표준시를 UTC로 변환 합니다.(For details on retrieving a TimeZoneInfo object that represents the destination time zone, see Finding the time zones defined on a local system.) The following code uses the TimeZoneInfo.ConvertTimeToUtc method to convert Eastern Standard Time to UTC.

DateTime easternTime = new DateTime(2007, 01, 02, 12, 16, 00);
string easternZoneId = "Eastern Standard Time";
try
{
   TimeZoneInfo easternZone = TimeZoneInfo.FindSystemTimeZoneById(easternZoneId);
   Console.WriteLine("The date and time are {0} UTC.", 
                     TimeZoneInfo.ConvertTimeToUtc(easternTime, easternZone));
}
catch (TimeZoneNotFoundException)
{
   Console.WriteLine("Unable to find the {0} zone in the registry.", 
                     easternZoneId);
}                           
catch (InvalidTimeZoneException)
{
   Console.WriteLine("Registry data on the {0} zone has been corrupted.", 
                     easternZoneId);
}
Dim easternTime As New Date(2007, 01, 02, 12, 16, 00)
Dim easternZoneId As String = "Eastern Standard Time"
Try
   Dim easternZone As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(easternZoneId)
   Console.WriteLine("The date and time are {0} UTC.", _ 
                     TimeZoneInfo.ConvertTimeToUtc(easternTime, easternZone))
Catch e As TimeZoneNotFoundException
   Console.WriteLine("Unable to find the {0} zone in the registry.", _
                     easternZoneId)
Catch e As InvalidTimeZoneException
   Console.WriteLine("Registry data on the {0} zone has been corrupted.", _ 
                     easternZoneId)
End Try                           

DateTime 개체의 Kind 속성과 표준 시간대가 일치 하지 않는 경우이 메서드는 ArgumentException을 throw 합니다.Note that this method throws an ArgumentException if the DateTime object's Kind property and the time zone are mismatched. Kind 속성이 DateTimeKind.Local 이지만 TimeZoneInfo 개체가 현지 표준 시간대를 나타내지 않는 경우 또는 Kind 속성이 DateTimeKind.Utc 이지만 TimeZoneInfo 개체가 TimeZoneInfo.Utc와 같지 않은 경우 불일치가 발생 합니다.A mismatch occurs if the Kind property is DateTimeKind.Local but the TimeZoneInfo object does not represent the local time zone, or if the Kind property is DateTimeKind.Utc but the TimeZoneInfo object does not equal TimeZoneInfo.Utc.

이러한 모든 메서드는 DateTime 값을 매개 변수로 사용 하 여 DateTime 값을 반환 합니다.All of these methods take DateTime values as parameters and return a DateTime value. DateTimeOffset 값의 경우 DateTimeOffset 구조체에는 현재 인스턴스의 날짜와 시간을 UTC로 변환 하는 ToUniversalTime 인스턴스 메서드가 있습니다.For DateTimeOffset values, the DateTimeOffset structure has a ToUniversalTime instance method that converts the date and time of the current instance to UTC. 다음 예제에서는 ToUniversalTime 메서드를 호출 하 여 현지 시간과 여러 다른 시간을 UTC (협정 세계시)로 변환 합니다.The following example calls the ToUniversalTime method to convert a local time and several other times to Coordinated Universal Time (UTC).

DateTimeOffset localTime, otherTime, universalTime;
 
// Define local time in local time zone
localTime = new DateTimeOffset(new DateTime(2007, 6, 15, 12, 0, 0));
Console.WriteLine("Local time: {0}", localTime);
Console.WriteLine();

// Convert local time to offset 0 and assign to otherTime
otherTime = localTime.ToOffset(TimeSpan.Zero);
Console.WriteLine("Other time: {0}", otherTime);
Console.WriteLine("{0} = {1}: {2}", 
                  localTime, otherTime, 
                  localTime.Equals(otherTime));
Console.WriteLine("{0} exactly equals {1}: {2}", 
                  localTime, otherTime, 
                  localTime.EqualsExact(otherTime));
Console.WriteLine();
                  
// Convert other time to UTC
universalTime = localTime.ToUniversalTime(); 
Console.WriteLine("Universal time: {0}", universalTime);
Console.WriteLine("{0} = {1}: {2}", 
                  otherTime, universalTime, 
                  universalTime.Equals(otherTime));
Console.WriteLine("{0} exactly equals {1}: {2}", 
                  otherTime, universalTime, 
                  universalTime.EqualsExact(otherTime));
Console.WriteLine();
// The example produces the following output to the console:
//    Local time: 6/15/2007 12:00:00 PM -07:00
//    
//    Other time: 6/15/2007 7:00:00 PM +00:00
//    6/15/2007 12:00:00 PM -07:00 = 6/15/2007 7:00:00 PM +00:00: True
//    6/15/2007 12:00:00 PM -07:00 exactly equals 6/15/2007 7:00:00 PM +00:00: False
//    
//    Universal time: 6/15/2007 7:00:00 PM +00:00
//    6/15/2007 7:00:00 PM +00:00 = 6/15/2007 7:00:00 PM +00:00: True
//    6/15/2007 7:00:00 PM +00:00 exactly equals 6/15/2007 7:00:00 PM +00:00: True   
Dim localTime, otherTime, universalTime As DateTimeOffset
 
' Define local time in local time zone
localTime = New DateTimeOffset(#6/15/2007 12:00:00PM#)
Console.WriteLine("Local time: {0}", localTime)
Console.WriteLine()

' Convert local time to offset 0 and assign to otherTime
otherTime = localTime.ToOffset(TimeSpan.Zero)
Console.WriteLine("Other time: {0}", otherTime)
Console.WriteLine("{0} = {1}: {2}", _
                  localTime, otherTime, _
                  localTime.Equals(otherTime))
Console.WriteLine("{0} exactly equals {1}: {2}", _ 
                  localTime, otherTime, _
                  localTime.EqualsExact(otherTime))
Console.WriteLine()
                  
' Convert other time to UTC
universalTime = localTime.ToUniversalTime() 
Console.WriteLine("Universal time: {0}", universalTime)
Console.WriteLine("{0} = {1}: {2}", _
                  otherTime, universalTime, _ 
                  universalTime.Equals(otherTime))
Console.WriteLine("{0} exactly equals {1}: {2}", _ 
                  otherTime, universalTime, _
                  universalTime.EqualsExact(otherTime))
Console.WriteLine()
' The example produces the following output to the console:
'    Local time: 6/15/2007 12:00:00 PM -07:00
'    
'    Other time: 6/15/2007 7:00:00 PM +00:00
'    6/15/2007 12:00:00 PM -07:00 = 6/15/2007 7:00:00 PM +00:00: True
'    6/15/2007 12:00:00 PM -07:00 exactly equals 6/15/2007 7:00:00 PM +00:00: False
'    
'    Universal time: 6/15/2007 7:00:00 PM +00:00
'    6/15/2007 7:00:00 PM +00:00 = 6/15/2007 7:00:00 PM +00:00: True
'    6/15/2007 7:00:00 PM +00:00 exactly equals 6/15/2007 7:00:00 PM +00:00: True   

UTC를 지정한 표준 시간대로 변환Converting UTC to a designated time zone

UTC를 현지 시간으로 변환 하려면 다음에 나오는 "UTC를 현지 시간으로 변환" 섹션을 참조 하세요.To convert UTC to local time, see the "Converting UTC to Local Time" section that follows. UTC를 지정 하는 표준 시간대의 시간으로 변환 하려면 ConvertTimeFromUtc 메서드를 호출 합니다.To convert UTC to the time in any time zone that you designate, call the ConvertTimeFromUtc method. 이 메서드에서 사용하는 두 개의 매개 변수는 다음과 같습니다.The method takes two parameters:

  • 변환할 UTC.The UTC to convert. Kind 속성이 Unspecified 또는 Utc로 설정 되어 있는 DateTime 값 이어야 합니다.This must be a DateTime value whose Kind property is set to Unspecified or Utc.

  • UTC를 변환한 값이 속하게 될 표준 시간대The time zone to convert the UTC to.

다음 코드는 UTC를 중부 표준시로 변환합니다.The following code converts UTC to Central Standard Time.

DateTime timeUtc = DateTime.UtcNow;
try
{
   TimeZoneInfo cstZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
   DateTime cstTime = TimeZoneInfo.ConvertTimeFromUtc(timeUtc, cstZone);
   Console.WriteLine("The date and time are {0} {1}.", 
                     cstTime, 
                     cstZone.IsDaylightSavingTime(cstTime) ?
                             cstZone.DaylightName : cstZone.StandardName);
}
catch (TimeZoneNotFoundException)
{
   Console.WriteLine("The registry does not define the Central Standard Time zone.");
}                           
catch (InvalidTimeZoneException)
{
   Console.WriteLine("Registry data on the Central Standard Time zone has been corrupted.");
}
Dim timeUtc As Date = Date.UtcNow
Try
   Dim cstZone As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time")
   Dim cstTime As Date = TimeZoneInfo.ConvertTimeFromUtc(timeUtc, cstZone)
   Console.WriteLine("The date and time are {0} {1}.", _
                     cstTime, _
                     IIf(cstZone.IsDaylightSavingTime(cstTime), _
                         cstZone.DaylightName, cstZone.StandardName))
Catch e As TimeZoneNotFoundException
   Console.WriteLine("The registry does not define the Central Standard Time zone.")
Catch e As InvalidTimeZoneException
   Console.WriteLine("Registry data on the Central Standard Time zone has been corrupted.")
End Try

UTC를 현지 시간으로 변환Converting UTC to local time

UTC를 현지 시간으로 변환 하려면 시간을 변환할 DateTime 개체의 ToLocalTime 메서드를 호출 합니다.To convert UTC to local time, call the ToLocalTime method of the DateTime object whose time you want to convert. 메서드의 정확한 동작은 다음 표와 같이 개체의 Kind 속성 값에 따라 다릅니다.The exact behavior of the method depends on the value of the object’s Kind property, as the following table shows.

DateTime.Kind 변환Conversion
DateTimeKind.Local DateTime 값을 변경 하지 않고 반환 합니다.Returns the DateTime value unchanged.
DateTimeKind.Unspecified DateTime 값이 UTC 인 것으로 가정 하 고 UTC를 현지 시간으로 변환 합니다.Assumes that the DateTime value is UTC and converts the UTC to local time.
DateTimeKind.Utc DateTime 값을 현지 시간으로 변환 합니다.Converts the DateTime value to local time.

참고

TimeZone.ToLocalTime 메서드는 DateTime.ToLocalTime 메서드와 동일 하 게 동작 합니다.The TimeZone.ToLocalTime method behaves identically to the DateTime.ToLocalTime method. 이 메서드는 변환할 날짜 및 시간 값인 단일 매개 변수를 사용 합니다.It takes a single parameter, which is the date and time value to convert.

static (Visual BasicShared) TimeZoneInfo.ConvertTime 메서드를 사용 하 여 지정 된 표준 시간대의 시간을 현지 시간으로 변환할 수도 있습니다.You can also convert the time in any designated time zone to local time by using the static (Shared in Visual Basic) TimeZoneInfo.ConvertTime method. 이 기법은 다음 섹션에서 설명 합니다.This technique is discussed in the next section.

두 표준 시간대 간 변환Converting between any two time zones

TimeZoneInfo 클래스의 다음 두 static (Visual Basic의Shared) 메서드 중 하나를 사용 하 여 두 표준 시간대 간에 변환할 수 있습니다.You can convert between any two time zones by using either of the following two static (Shared in Visual Basic) methods of the TimeZoneInfo class:

  • ConvertTime

    이 메서드의 매개 변수는 변환할 날짜 및 시간 값, 날짜 및 시간 값의 표준 시간대를 나타내는 TimeZoneInfo 개체 및 날짜 및 시간 값을로 변환할 표준 시간대를 나타내는 TimeZoneInfo 개체입니다.This method's parameters are the date and time value to convert, a TimeZoneInfo object that represents the time zone of the date and time value, and a TimeZoneInfo object that represents the time zone to convert the date and time value to.

  • ConvertTimeBySystemTimeZoneId

    이 메서드의 매개 변수는 변환할 날짜 및 시간 값, 날짜 및 시간 값의 표준 시간대의 식별자 및 날짜 및 시간 값을로 변환할 표준 시간대의 식별자입니다.This method's parameters are the date and time value to convert, the identifier of the date and time value's time zone, and the identifier of the time zone to convert the date and time value to.

두 메서드 모두 변환할 날짜 및 시간 값의 Kind 속성 및 해당 표준 시간대를 나타내는 TimeZoneInfo 개체 또는 표준 시간대 식별자가 서로 일치 해야 합니다.Both methods require that the Kind property of the date and time value to convert and the TimeZoneInfo object or time zone identifier that represents its time zone correspond to one another. 그렇지 않으면 ArgumentException이 throw됩니다.Otherwise, an ArgumentException is thrown. 예를 들어 날짜 및 시간 값의 Kind 속성이 DateTimeKind.Local이면 메서드에 매개 변수로 전달 된 TimeZoneInfo 개체가 TimeZoneInfo.Local와 같지 않은 경우 예외가 throw 됩니다.For example, if the Kind property of the date and time value is DateTimeKind.Local, an exception is thrown if the TimeZoneInfo object passed as a parameter to the method is not equal to TimeZoneInfo.Local. 메서드에 매개 변수로 전달 된 식별자가 TimeZoneInfo.Local.Id와 같지 않은 경우에도 예외가 throw 됩니다.An exception is also thrown if the identifier passed as a parameter to the method is not equal to TimeZoneInfo.Local.Id.

다음 예제에서는 ConvertTime 메서드를 사용 하 여 하와이 표준시를 현지 시간으로 변환 합니다.The following example uses the ConvertTime method to convert from Hawaiian Standard Time to local time.

DateTime hwTime = new DateTime(2007, 02, 01, 08, 00, 00);
try
{
   TimeZoneInfo hwZone = TimeZoneInfo.FindSystemTimeZoneById("Hawaiian Standard Time");
   Console.WriteLine("{0} {1} is {2} local time.", 
           hwTime, 
           hwZone.IsDaylightSavingTime(hwTime) ? hwZone.DaylightName : hwZone.StandardName, 
           TimeZoneInfo.ConvertTime(hwTime, hwZone, TimeZoneInfo.Local));
}
catch (TimeZoneNotFoundException)
{
   Console.WriteLine("The registry does not define the Hawaiian Standard Time zone.");
}                           
catch (InvalidTimeZoneException)
{
   Console.WriteLine("Registry data on the Hawaiian Standard Time zone has been corrupted.");
}
Dim hwTime As Date = #2/01/2007 8:00:00 AM#
Try
   Dim hwZone As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Hawaiian Standard Time")
   Console.WriteLine("{0} {1} is {2} local time.", _
                     hwTime, _
                     IIf(hwZone.IsDaylightSavingTime(hwTime), hwZone.DaylightName, hwZone.StandardName), _
                     TimeZoneInfo.ConvertTime(hwTime, hwZone, TimeZoneInfo.Local))
Catch e As TimeZoneNotFoundException
   Console.WriteLine("The registry does not define the Hawaiian Standard Time zone.")
Catch e As InvalidTimeZoneException
   Console.WriteLine("Registry data on the Hawaiian Standard Time zone has been corrupted.")
End Try                     

DateTimeOffset 값 변환Converting DateTimeOffset values

개체를 인스턴스화할 때 표준 시간대에서 연결이 끊 었 기 때문에 DateTimeOffset 개체로 표시 되는 날짜 및 시간 값은 완전히 시간대를 인식 하지 못합니다.Date and time values represented by DateTimeOffset objects are not fully time-zone aware because the object is disassociated from its time zone at the time it is instantiated. 그러나 많은 경우에는 애플리케이션에서 특정 표준 시간대의 시간이 아니라 단순히 서로 다른 UTC 오프셋 두 개를 기준으로 날짜 및 시간을 변환하면 됩니다.However, in many cases an application simply needs to convert a date and time based on two different offsets from UTC rather than on the time in particular time zones. 이 변환을 수행 하려면 현재 인스턴스의 ToOffset 메서드를 호출 하면 됩니다.To perform this conversion, you can call the current instance's ToOffset method. 메서드의 단일 매개 변수는 메서드에서 반환할 새 날짜 및 시간 값의 오프셋입니다.The method's single parameter is the offset of the new date and time value that the method is to return.

예를 들어 사용자가 웹 페이지에서 요청한 날짜 및 시간이 알려져 있고 이 값이 MM/dd/yyyy hh:mm:ss zzzz 형식의 문자열로 serialize된 경우 뒤따르는 ReturnTimeOnServer 메서드에서 이 날짜 및 시간 값을 웹 서버의 날짜 및 시간 값으로 변환합니다.For example, if the date and time of a user request for a Web page is known and is serialized as a string in the format MM/dd/yyyy hh:mm:ss zzzz, the following ReturnTimeOnServer method converts this date and time value to the date and time on the Web server.

public DateTimeOffset ReturnTimeOnServer(string clientString)
{
   string format = @"M/d/yyyy H:m:s zzz";
   TimeSpan serverOffset = TimeZoneInfo.Local.GetUtcOffset(DateTimeOffset.Now);
   
   try
   {      
      DateTimeOffset clientTime = DateTimeOffset.ParseExact(clientString, format, CultureInfo.InvariantCulture);
      DateTimeOffset serverTime = clientTime.ToOffset(serverOffset);
      return serverTime;
   }
   catch (FormatException)
   {
      return DateTimeOffset.MinValue;
   }
}
Public Function ReturnTimeOnServer(clientString As String) As DateTimeOffset
   Dim format As String = "M/d/yyyy H:m:s zzz"
   Dim serverOffset As TimeSpan = TimeZoneInfo.Local.GetUtcOffset(DateTimeOffset.Now)
   
   Try      
      Dim clientTime As DateTimeOffset = DateTimeOffset.ParseExact(clientString, format, CultureInfo.InvariantCulture)
      Dim serverTime As DateTimeOffset = clientTime.ToOffset(serverOffset)
      Return serverTime
   Catch e As FormatException
      Return DateTimeOffset.MinValue
   End Try    
End Function

UTC보다 다섯 시간 이른 표준 시간대의 날짜 및 시간을 나타내는 문자열 "9/1/2007 5:32:07 -05:00"이 메서드에 전달되는 경우 이 메서드에서는 미국 태평양 표준 시간대에 있는 서버에 대해 9/1/2007 3:32:07 AM -07:00을 반환합니다.If the method is passed the string "9/1/2007 5:32:07 -05:00", which represents the date and time in a time zone five hours earlier than UTC, it returns 9/1/2007 3:32:07 AM -07:00 for a server located in the U.S. Pacific Standard Time zone.

TimeZoneInfo 클래스에는 ToOffset(TimeSpan) 값을 사용 하 여 표준 시간대 변환을 수행 하는 TimeZoneInfo.ConvertTime(DateTimeOffset, TimeZoneInfo) 메서드의 오버 로드도 포함 되어 있습니다.The TimeZoneInfo class also includes an overload of the TimeZoneInfo.ConvertTime(DateTimeOffset, TimeZoneInfo) method that performs time zone conversions with ToOffset(TimeSpan) values. 메서드의 매개 변수는 DateTimeOffset 값 이며 시간을 변환할 표준 시간대에 대 한 참조입니다.The method's parameters are a DateTimeOffset value and a reference to the time zone to which the time is to be converted. 메서드 호출은 DateTimeOffset 값을 반환 합니다.The method call returns a DateTimeOffset value. 예를 들어, 이전 예제의 ReturnTimeOnServer 메서드를 다음과 같이 다시 작성 하 여 ConvertTime(DateTimeOffset, TimeZoneInfo) 메서드를 호출할 수 있습니다.For example, the ReturnTimeOnServer method in the previous example could be rewritten as follows to call the ConvertTime(DateTimeOffset, TimeZoneInfo) method.

public DateTimeOffset ReturnTimeOnServer(string clientString)
{
   string format = @"M/d/yyyy H:m:s zzz";
   
   try
   {      
      DateTimeOffset clientTime = DateTimeOffset.ParseExact(clientString, format, 
                                  CultureInfo.InvariantCulture);
      DateTimeOffset serverTime = TimeZoneInfo.ConvertTime(clientTime, 
                                  TimeZoneInfo.Local);
      return serverTime;
   }
   catch (FormatException)
   {
      return DateTimeOffset.MinValue;
   }
}
Public Function ReturnTimeOnServer(clientString As String) As DateTimeOffset
   Dim format As String = "M/d/yyyy H:m:s zzz"
   
   Try      
      Dim clientTime As DateTimeOffset = DateTimeOffset.ParseExact(clientString, format, CultureInfo.InvariantCulture)
      Dim serverTime As DateTimeOffset = TimeZoneInfo.ConvertTime(clientTime, TimeZoneInfo.Local)
      Return serverTime
   Catch e As FormatException
      Return DateTimeOffset.MinValue
   End Try    
End Function

참조See also