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

C# DateTimeOffset.FromUnixTimeMilliseconds() 메서드 완벽 정리

C#의 DateTimeOffset.FromUnixTimeMilliseconds() 메서드는 1970년 1월 1일 자정(1970-01-01T00:00:00Z, UTC 기준) 이후 경과된 시간을 밀리초 단위로 표현한 유닉스 시간(Unix Time)DateTimeOffset 값으로 변환할 때 사용합니다.

이 메서드는 타임스탬프 형태로 저장된 데이터를 실제 날짜와 시간으로 변환해야 하는 경우에 매우 유용하며, 데이터베이스나 API 응답에서 흔히 볼 수 있는 밀리초 단위의 Unix Timestamp를 손쉽게 처리할 수 있습니다.

구문(Syntax)

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

public static DateTimeOffset FromUnixTimeMilliseconds (long val);

매개변수 val에는 1970년 1월 1일 12:00 AM UTC 이후 경과된 밀리초를 나타내는 long 값을 전달합니다.

참고로, 전달된 값이 유효 범위(-62,135,596,800,000 ~ 253,402,300,799,999)를 벗어나면 ArgumentOutOfRangeException 예외가 발생합니다.

예제 1: 밀리초 값을 DateTimeOffset으로 변환하기

다음은 DateTimeOffset.FromUnixTimeMilliseconds() 메서드를 사용하여 밀리초 단위의 유닉스 시간을 변환하는 예제입니다.

using System;
public class Demo {
   public static void Main() {
      DateTimeOffset offset = DateTimeOffset.FromUnixTimeMilliseconds(30000);
      Console.WriteLine("DateTimeOffset = {0} ",offset);
      Console.WriteLine("DateTimeOffset (other format) = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ",offset);
   }
}

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

DateTimeOffset = 1/1/1970 12:00:30 AM +00:00
DateTimeOffset (other format) = 01 January 1970, 12:00:30

30,000밀리초는 곧 30초를 의미하므로, 에포크(Epoch) 시점인 1970년 1월 1일 0시 0분 30초가 출력되는 것을 확인할 수 있습니다.

예제 2: 0을 전달한 경우

이번에는 인자로 0을 전달했을 때의 동작을 살펴보겠습니다.

using System;
public class Demo {
   public static void Main() {
      DateTimeOffset offset = DateTimeOffset.FromUnixTimeMilliseconds(0);
      Console.WriteLine("DateTimeOffset = {0} ",offset);
      Console.WriteLine("DateTimeOffset (other format) = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ",offset);
   }
}

실행 결과

실행 결과는 다음과 같습니다.

DateTimeOffset = 1/1/1970 12:00:00 AM +00:00
DateTimeOffset (other format) = 01 January 1970, 12:00:00

값으로 0을 전달하면 유닉스 에포크의 시작점인 1970년 1월 1일 0시 0분 0초(UTC)가 그대로 반환됩니다.

마무리

DateTimeOffset.FromUnixTimeMilliseconds() 메서드는 밀리초 단위의 유닉스 타임스탬프를 간편하게 날짜·시간 객체로 변환해 주는 도구입니다. 초 단위 타임스탬프를 다루어야 한다면 FromUnixTimeSeconds() 메서드를, 반대로 DateTimeOffset을 타임스탬프로 되돌리고 싶다면 ToUnixTimeMilliseconds() 메서드를 활용하면 됩니다.