C#의 DateTimeOffset.ToOffset() 메서드는 현재 DateTimeOffset 객체가 가진 값을, 지정한 오프셋(시간대 차이)에 맞는 날짜와 시간으로 변환할 때 사용합니다. 이 메서드는 동일한 시점을 나타내면서도 오프셋만 변경된 새로운 DateTimeOffset 객체를 반환한다는 점이 특징입니다.
구문
DateTimeOffset.ToOffset() 메서드의 기본 구문은 다음과 같습니다.
public DateTimeOffset ToOffset (TimeSpan val);
여기서 매개변수 val은 변환하고자 하는 대상 오프셋(TimeSpan)을 의미합니다. 예를 들어 UTC보다 5시간 빠른 시간대로 변환하려면 new TimeSpan(5, 0, 0)을 전달하면 됩니다.
예제 1: 음수 오프셋으로 변환하기
다음 예제는 DateTimeOffset 객체를 다른 오프셋 값으로 변환하는 방법을 보여줍니다.
using System;
public class Demo {
public static void Main() {
DateTimeOffset dateTimeOffset = new DateTimeOffset(2019, 9, 10, 4, 20, 30, new TimeSpan(-5, 0, 0));
Console.WriteLine("DateTimeOffset = {0}", dateTimeOffset);
DateTimeOffset res = dateTimeOffset.ToOffset(new TimeSpan(-10, 1, 0));
Console.WriteLine("DateTimeOffset (updated) = {0}", res);
}
}실행 결과
위 코드를 실행하면 다음과 같은 출력이 생성됩니다.
DateTimeOffset = 9/10/2019 4:20:30 AM -05:00 DateTimeOffset (updated) = 9/9/2019 11:21:30 PM -09:59
출력 결과에서 확인할 수 있듯이, 오프셋이 -05:00에서 -09:59로 변경되면서 실제 표시되는 날짜와 시간도 그에 맞게 조정된 것을 볼 수 있습니다.
예제 2: 양수 오프셋으로 변환하기
이번에는 양수 오프셋을 사용하는 또 다른 예제입니다.
using System;
public class Demo {
public static void Main() {
DateTimeOffset dateTimeOffset = new DateTimeOffset(2019, 9, 10, 4, 20, 30, new TimeSpan(5, 0, 0));
Console.WriteLine("DateTimeOffset = {0}", dateTimeOffset);
DateTimeOffset res = dateTimeOffset.ToOffset(new TimeSpan(3, 1, 0));
Console.WriteLine("DateTimeOffset (updated) = {0}", res);
}
}실행 결과
위 코드를 실행하면 다음과 같은 출력이 생성됩니다.
DateTimeOffset = 9/10/2019 4:20:30 AM +05:00 DateTimeOffset (updated) = 9/10/2019 2:21:30 AM +03:01
정리
DateTimeOffset.ToOffset() 메서드는 시간대 간 변환이 필요할 때 매우 유용합니다. 원본 시점(Universal Time 기준)은 그대로 유지되며, 표현되는 현지 시간과 오프셋만 지정한 값에 따라 조정됩니다. 다국어 서비스나 글로벌 애플리케이션에서 서로 다른 시간대의 시간을 일관성 있게 처리해야 할 때 활용하면 좋습니다.