C#의 DateTime.FromFileTime() 메서드는 지정된 Windows 파일 시간(file time)을 이에 상응하는 현지 시간(local time)으로 변환하는 데 사용됩니다.
Windows 파일 시간은 1601년 1월 1일 자정(UTC)을 기준점(epoch)으로 하여 경과한 시간을 100나노초 단위인 '틱(tick)'으로 표현한 값입니다. 따라서 변환 결과가 1601년으로 표시되는 것이 정상적인 동작입니다.
구문
다음은 이 메서드의 기본 구문입니다.
public static DateTime FromFileTime (long fileTime);
매개변수 fileTime은 틱(tick) 단위로 표현된 Windows 파일 시간입니다. 이 값은 long 형식이며, 음수일 수 없습니다.
예제 1
DateTime.FromFileTime() 메서드를 사용하여 파일 시간 값을 현지 시간으로 변환해 보겠습니다.
using System;
public class Demo {
public static void Main() {
DateTime d1 = DateTime.FromFileTime(100000000000);
System.Console.WriteLine("DateTime = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ", d1);
}
}출력
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
DateTime = 01 January 1601, 02:46:40
100000000000틱은 약 10초에 해당하지만, 출력에서는 02:46:40으로 표시되었습니다. 이는 시스템의 현지 시간대(time zone) 오프셋이 변환 결과에 반영되기 때문입니다.
예제 2
이번에는 파일 시간 값으로 0을 전달하는 경우를 살펴보겠습니다.
using System;
public class Demo {
public static void Main() {
DateTime d1 = DateTime.FromFileTime(0);
System.Console.WriteLine("DateTime = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ", d1);
}
}출력
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
DateTime = 01 January 1601, 12:00:00
파일 시간이 0이면 기준점인 1601년 1월 1일이 반환되며, 여기에도 현지 시간대 오프셋이 적용되어 12:00:00으로 표시되었습니다.
정리
DateTime.FromFileTime() 메서드는 파일 시스템에서 얻은 타임스탬프를 사람이 읽을 수 있는 날짜와 시간으로 변환할 때 유용합니다. 반대 방향의 변환이 필요하다면 DateTime.ToFileTime() 메서드를 사용하면 됩니다.