Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# DateTimeOffset.FromUnixTimeSeconds() 메서드 완벽 정리: 유닉스 타임스탬프 변환 방법

C#의 DateTimeOffset.FromUnixTimeSeconds() 메서드는 1970년 1월 1일 00:00:00 UTC(유닉스 에포크) 이후 경과된 초 단위의 유닉스 시간을 DateTimeOffset 값으로 변환하는 데 사용됩니다. API 응답이나 데이터베이스에서 흔히 볼 수 있는 초 단위 타임스탬프를 날짜·시간 객체로 손쉽게 바꿀 때 유용합니다.

구문

메서드의 기본 구문은 다음과 같습니다.

public static DateTimeOffset FromUnixTimeSeconds(long val);

매개변수 val은 1970-01-01T00:00:00Z(1970년 1월 1일 자정, UTC 기준) 이후 경과된 초 수로 표현된 유닉스 시간입니다. 유효 범위는 -62,135,596,800초부터 253,402,300,799초까지이며, 이 범위를 벗어나면 ArgumentOutOfRangeException이 발생합니다.

예제 1: 양수 값 변환하기

다음 예제는 초 단위 유닉스 시간을 DateTimeOffset으로 변환하고, 다양한 형식으로 출력하는 방법을 보여줍니다.

using System;

public class Demo {
    public static void Main() {
        DateTimeOffset offset = DateTimeOffset.FromUnixTimeSeconds(20);
        Console.WriteLine("DateTimeOffset = {0}", offset);
        Console.WriteLine("DateTimeOffset (다른 형식) = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss}", offset);
    }
}

실행 결과

DateTimeOffset = 1/1/1970 12:00:20 AM +00:00
DateTimeOffset (다른 형식) = 01 January 1970, 12:00:20

에포크(1970년 1월 1일 00:00:00 UTC)로부터 20초가 지난 시점인 1970년 1월 1일 00:00:20 UTC가 DateTimeOffset 값으로 정상적으로 변환된 것을 확인할 수 있습니다.

예제 2: 음수 값으로 에포크 이전 시간 변환하기

에포크보다 이전 날짜를 나타내려면 매개변수에 음수 값을 지정하면 됩니다.

using System;

public class Demo {
    public static void Main() {
        DateTimeOffset offset = DateTimeOffset.FromUnixTimeSeconds(-20);
        Console.WriteLine("DateTimeOffset = {0}", offset);
        Console.WriteLine("DateTimeOffset (다른 형식) = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss}", offset);
    }
}

실행 결과

DateTimeOffset = 12/31/1969 11:59:40 PM +00:00
DateTimeOffset (다른 형식) = 31 December 1969, 11:59:40

-20초는 에포크보다 20초 이전이므로, 1969년 12월 31일 23:59:40 UTC로 변환되었습니다.

정리

DateTimeOffset.FromUnixTimeSeconds() 메서드는 초 단위 유닉스 타임스탬프를 DateTimeOffset으로 변환하는 간단하고 직관적인 방법을 제공합니다. 밀리초 단위 타임스탬프를 다룰 때는 FromUnixTimeMilliseconds() 메서드를, 반대로 DateTimeOffset을 유닉스 시간으로 바꿀 때는 ToUnixTimeSeconds() 또는 ToUnixTimeMilliseconds() 메서드를 함께 활용하면 됩니다.