C#에서 DateTime.ToUniversalTime() 메서드는 현재 DateTime 객체의 값을 협정 세계시(UTC, Coordinated Universal Time)로 변환하는 데 사용됩니다. 이 메서드는 서버와 클라이언트가 서로 다른 시간대에 있을 때 일관된 시간 데이터를 유지해야 하는 애플리케이션에서 특히 유용합니다.
메서드 구문
DateTime.ToUniversalTime() 메서드의 기본 구문은 다음과 같습니다.
public DateTime ToUniversalTime ();
이 메서드는 매개변수를 받지 않으며, 변환된 UTC 시간을 나타내는 새로운 DateTime 객체를 반환합니다.
예제 1: 기본 사용법
다음 예제는 DateTime.ToUniversalTime() 메서드를 사용하여 지정된 날짜와 시간을 UTC로 변환하는 방법을 보여줍니다.
using System;
public class Demo {
public static void Main() {
DateTime d = new DateTime(2019, 12, 11, 7, 11, 25);
Console.WriteLine("Date = {0}", d);
DateTime res = d.ToUniversalTime();
Console.WriteLine("String representation = {0}", res);
}
}실행 결과
Date = 11/11/2019 7:11:25 AM String representation = 11/11/2019 7:11:25 AM
위 출력 결과에서 볼 수 있듯이, 시스템의 현지 시간대가 UTC와 동일한 경우 변환된 값이 원래 값과 같게 표시됩니다.
예제 2: 문자열 파싱 후 UTC 변환
다음 예제는 문자열로 표현된 날짜를 DateTime 객체로 파싱한 후, ToUniversalTime() 메서드를 적용하는 과정을 보여줍니다.
using System;
public class Demo {
public static void Main() {
DateTime localDate, universalDate;
String str = "11/11/2019 4:10:55";
localDate = DateTime.Parse(str);
universalDate = localDate.ToUniversalTime();
Console.WriteLine("Local time = {0} ", localDate);
Console.WriteLine("Universal time = {0} ", universalDate);
}
}실행 결과
Local time = 11/11/2019 4:10:55 AM Universal time = 11/11/2019 4:10:55 AM
참고 사항
ToUniversalTime() 메서드의 반환값은 실행 환경의 Kind 속성에 따라 달라집니다. DateTime 객체의 Kind가 DateTimeKind.Local인 경우 현지 시간대 기준으로 UTC로 변환되며, DateTimeKind.Unspecified인 경우에는 현지 시간으로 간주하여 변환됩니다. 반면 이미 UTC(Kind가 Utc)인 경우에는 아무런 변환 없이 원래 값이 그대로 반환됩니다. 따라서 정확한 시간 변환이 필요하다면 입력 DateTime 객체의 Kind 속성을 항상 확인하는 것이 좋습니다.