파일 시간
파일 시간은 1601년 1월 1일 오전 12시(UTC) 이후 경과된 100나노초 간격의 수를 나타내는 64비트 값입니다. 시스템은 애플리케이션이 파일을 만들고, 액세스하고, 파일에 쓸 때 파일 시간을 기록합니다.
NTFS 파일 시스템은 시간 값을 UTC 형식으로 저장하므로 표준 시간대 또는 일광 절약 시간제 변경의 영향을 받지 않습니다. FAT 파일 시스템은 컴퓨터의 현지 시간을 기준으로 시간 값을 저장합니다. 예를 들어 워싱턴의 오후 3시 PST에 저장된 파일은 NTFS 볼륨에서 뉴욕에서 오후 6시 00분 EST로 표시되지만 FAT 볼륨으로 뉴욕에서 오후 3시 00분 EST로 표시됩니다.
타임스탬프는 여러 가지 이유로 다양한 시간에 업데이트됩니다. 파일 타임스탬프를 보장하는 유일한 보장은 변경 내용을 적용하는 핸들이 닫히면 파일 시간이 올바르게 반영된다는 것입니다.
모든 파일 시스템에서 생성 및 마지막 액세스 시간을 기록할 수 있는 것은 아니며, 모든 파일 시스템에 동일한 방식으로 기록되는 것은 아닙니다. 예를 들어 FAT에서 생성 시간의 해상도는 10밀리초이지만 쓰기 시간은 2초의 해상도를 가지며 액세스 시간은 1일의 해상도를 가지므로 실제로 액세스 날짜입니다. NTFS 파일 시스템은 마지막 액세스 후 최대 1시간까지 파일의 마지막 액세스 시간으로 업데이트를 지연합니다.
지정된 파일의 파일 시간을 검색하려면 GetFileTime 함수를 사용합니다. GetFileTime 은 만들기, 마지막 액세스 및 마지막 쓰기 시간을 개별 FILETIME 구조에 복사합니다. FindFirstFile 및 FindNextFile 함수를 사용하여 파일 시간을 검색할 수도 있습니다. 이러한 함수는 파일 시간을 WIN32_FIND_DATA 구조체의 FILETIME 구조에 복사합니다. 파일에 쓸 때 쓰기에 사용되는 모든 핸들이 닫히기 전까지는 마지막 쓰기 시간이 완전히 업데이트되지 않습니다.
파일의 파일 시간을 설정하려면 SetFileTime 함수를 사용합니다. 이 함수를 사용하면 파일의 내용을 변경하지 않고 만들기, 마지막 액세스 및 마지막 쓰기 시간을 수정할 수 있습니다. CompareFileTime 함수를 사용하여 여러 파일의 시간을 비교할 수 있습니다. 함수는 두 개의 파일 시간을 비교하고 시간이 더 나중임을 나타내는 값을 반환하거나, 시간이 같으면 0을 반환합니다.
지정된 파일의 파일 시간을 수정하려는 경우 SystemTimeToFileTime 함수를 사용하여 날짜 및 시간을 파일 시간으로 변환할 수 있습니다. GetSystemTimeAsFileTime 함수를 호출하여 FILETIME 구조에서 시스템 시간을 가져올 수도 있습니다.
사용자에게 파일 시간을 쉽게 표시하려면 FileTimeToSystemTime 함수를 사용합니다. FileTimeToSystemTime 은 파일 시간을 변환하고 월, 일, 연도 및 시간을 파일 시간에서 SYSTEMTIME 구조로 복사합니다.
파일 시간 및 일광 절약 시간
사용자가 일광 절약 시간제에 맞게 시스템을 자동으로 조정하도록 설정한 경우 파일 시간을 사용할 때 주의해야 합니다.
파일 시간을 현지 시간으로 변환하려면 FileTimeToLocalFileTime 함수를 사용합니다. 그러나 FileTimeToLocalFileTime 은 표준 시간대 및 일광 절약 시간에 대한 현재 설정을 사용합니다. 따라서 일광 절약 시간인 경우 변환하는 파일 시간이 표준 시간인 경우에도 일광 절약 시간이 고려됩니다.
FAT 파일 시스템은 현지 시간에 디스크의 시간을 기록합니다. GetFileTime 은 FAT 파일 시스템에서 캐시된 UTC 시간을 검색합니다. 일광 절약 시간이 되면 캐시가 업데이트되지 않으므로 GetFileTime 에서 검색한 시간이 한 시간 동안 해제됩니다. 컴퓨터를 다시 시작하면 GetFileTime 에서 검색하는 캐시된 시간이 올바릅니다. FindFirstFile 은 FAT 파일 시스템에서 현지 시간을 검색하고 표준 시간대 및 일광 절약 시간에 대한 현재 설정을 사용하여 UTC로 변환합니다. 따라서 일광 절약 시간인 경우 변환하는 파일 시간이 표준 시간인 경우에도 FindFirstFile 은 일광 절약 시간을 고려합니다.
NTFS 파일 시스템은 디스크의 시간을 UTC로 기록합니다. 파일 시간을 현지 시간으로 변환할 때 일광 절약 시간을 고려하려면 FileTimeToLocalFileTime을 사용하는 대신 다음 함수 시퀀스를 사용합니다.
파일 시간 및 CDFS
CDFS(Compact Disc File System)를 사용하여 미디어에 위치하거나 미디어에서 시작된 파일의 날짜 및 타임스탬프는 현지 표준 시간대에 맞게 조정됩니다. ISO 9660은 CDFS가 현지 표준 시간대에 대한 날짜 정보를 올바르게 표시한다고 명시하고 있습니다. 이렇게 하면 CDFS의 파일 날짜가 UDF(유니버설 디스크 형식)의 날짜와 동일하게 표시됩니다. UDF는 배포 미디어의 최신 표준입니다. 코드가 CDFS를 사용하여 미디어에 상주하거나 미디어에서 시작된 파일에 대한 수정되지 않은 날짜 정보에 의존하는 경우 제대로 작동하지 않을 수 있습니다.