C#의 DateTime.ToFileTimeUtc() 메서드는 현재 DateTime 객체의 값을 Windows 파일 시간(Windows file time)으로 변환하는 데 사용됩니다.
Windows 파일 시간은 64비트 정수 값으로, 서기 1601년 1월 1일 자정(UTC) 이후로 경과한 시간을 100나노초(nanosecond) 간격의 수로 나타낸 것입니다. 이 형식은 Windows 운영체제에서 파일의 생성, 접근, 수정 시각을 기록할 때 내부적으로 사용되며, UTC 기준으로 계산되기 때문에 시간대(time zone)의 영향을 받지 않는다는 장점이 있습니다.
구문(Syntax)
메서드의 기본 구문은 다음과 같습니다.
public long ToFileTimeUtc ();
매개변수는 받지 않으며, 변환된 Windows 파일 시간을 long 형식의 정수로 반환합니다.
예제 1: 지정된 날짜 변환하기
다음은 DateTime.ToFileTimeUtc() 메서드를 사용하여 특정 날짜를 Windows 파일 시간으로 변환하는 예제입니다.
using System;
public class Demo {
public static void Main() {
DateTime d = new DateTime(2019, 05, 10, 6, 10, 25);
Console.WriteLine("Date = {0}", d);
long res = d.ToFileTimeUtc();
Console.WriteLine("Windows file time (Utc) = {0}", res);
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Date = 5/10/2019 6:10:25 AM Windows file time (Utc) = 132019422250000000
예제 2: 현재 시간 변환하기
이번에는 현재 시스템 시간(DateTime.Now)을 Windows 파일 시간으로 변환해 보겠습니다.
using System;
public class Demo {
public static void Main() {
DateTime d = DateTime.Now;
Console.WriteLine("Date = {0}", d);
long res = d.ToFileTimeUtc();
Console.WriteLine("Windows file time (Utc) = {0}", res);
}
}출력 결과
실행 시점에 따라 결과는 달라지며, 아래는 실행 당시의 출력 예시입니다.
Date = 10/16/2019 8:25:58 AM Windows file time (Utc) = 132156879583999032
참고 사항
- 변환 대상 날짜가 1601년 1월 1일(UTC)보다 이전이면 ArgumentOutOfRangeException 예외가 발생합니다.
- 현지 시간대를 반영하여 변환하려면 ToFileTime() 메서드를, UTC 기준으로 변환하려면 ToFileTimeUtc() 메서드를 사용하세요.