Waktu File

Waktu file adalah nilai 64-bit yang menunjukkan jumlah interval 100 nanodetik yang telah berlalu sejak 12:00 A.M. 1 Januari 1601 Waktu Universal Terkoordinasi (UTC). Sistem merekam waktu file saat aplikasi membuat, mengakses, dan menulis ke file.

Sistem file NTFS menyimpan nilai waktu dalam format UTC, sehingga tidak terpengaruh oleh perubahan zona waktu atau waktu musim panas. Sistem file FAT menyimpan nilai waktu berdasarkan waktu lokal komputer. Misalnya, file yang disimpan pada pukul 15:00 PST di Washington dilihat sebagai 18:00 EST di New York pada volume NTFS, tetapi dipandang sebagai 15:00 EST di New York pada volume FAT.

Stempel waktu diperbarui pada berbagai waktu dan karena berbagai alasan. Satu-satunya jaminan tentang stempel waktu file adalah bahwa waktu file tercermin dengan benar ketika handel yang membuat perubahan ditutup.

Tidak semua sistem file dapat merekam pembuatan dan waktu akses terakhir, dan tidak semua sistem file merekamnya dengan cara yang sama. Misalnya, resolusi waktu buat pada FAT adalah 10 milidetik, sementara waktu tulis memiliki resolusi 2 detik dan waktu akses memiliki resolusi 1 hari, sehingga benar-benar tanggal akses. Sistem file NTFS menunda pembaruan ke waktu akses terakhir untuk file hingga 1 jam setelah akses terakhir.

Untuk mengambil waktu file untuk file tertentu, gunakan fungsi GetFileTime . GetFileTime menyalin pembuatan, akses terakhir, dan waktu tulis terakhir ke struktur FILETIME individual. Anda juga dapat mengambil waktu file menggunakan fungsi FindFirstFile dan FindNextFile . Fungsi-fungsi ini menyalin waktu file ke struktur FILETIME dalam struktur WIN32_FIND_DATA . Saat menulis ke file, waktu tulis terakhir tidak sepenuhnya diperbarui sampai semua handel yang digunakan untuk menulis ditutup.

Untuk mengatur waktu file untuk file, gunakan fungsi SetFileTime . Fungsi ini memungkinkan Anda memodifikasi pembuatan, akses terakhir, dan waktu tulis terakhir tanpa mengubah konten file. Anda dapat membandingkan waktu file yang berbeda dengan menggunakan fungsi CompareFileTime . Fungsi membandingkan dua kali file dan mengembalikan nilai yang menunjukkan waktu mana yang lebih baru atau mengembalikan 0 (nol) jika waktunya sama.

Jika Anda berencana untuk mengubah waktu file untuk file tertentu, Anda dapat mengonversi tanggal dan waktu hari ke waktu file dengan menggunakan fungsi SystemTimeToFileTime . Anda juga dapat memperoleh waktu sistem dalam struktur FILETIME dengan memanggil fungsi GetSystemTimeAsFileTime .

Untuk membuat waktu file mudah ditampilkan kepada pengguna, gunakan fungsi FileTimeToSystemTime . FileTimeToSystemTime mengonversi waktu file dan menyalin bulan, hari, tahun, dan waktu hari dari waktu file ke struktur SYSTEMTIME .

Waktu File dan Waktu Musim Panas

Anda harus berhati-hati saat menggunakan waktu file jika pengguna telah mengatur sistem untuk secara otomatis menyesuaikan waktu musim panas.

Untuk mengonversi waktu file ke waktu lokal, gunakan fungsi FileTimeToLocalFileTime . Namun, FileTimeToLocalFileTime menggunakan pengaturan saat ini untuk zona waktu dan waktu musim panas. Oleh karena itu, jika siang hari menghemat waktu, dibutuhkan waktu musim panas untuk memperhitungkan, bahkan jika waktu file yang Anda konversi dalam waktu standar.

Sistem file FAT merekam waktu pada disk dalam waktu lokal. GetFileTime mengambil waktu UTC yang di-cache dari sistem file FAT. Ketika menjadi siang hari menghemat waktu, waktu yang diambil oleh GetFileTime tidak aktif satu jam, karena cache tidak diperbarui. Saat Anda menghidupkan ulang komputer, waktu cache yang diambil GetFileTime sudah benar. FindFirstFile mengambil waktu lokal dari sistem file FAT dan mengonversinya ke UTC dengan menggunakan pengaturan saat ini untuk zona waktu dan waktu musim panas. Oleh karena itu, jika siang hari menghemat waktu, FindFirstFile membutuhkan waktu musim panas untuk memperhitungkan, bahkan jika waktu file yang Anda konversi dalam waktu standar.

Sistem file NTFS mencatat waktu pada disk di UTC. Untuk mempertanggungjawabkan waktu musim panas saat mengonversi waktu file ke waktu setempat, gunakan urutan fungsi berikut alih-alih menggunakan FileTimeToLocalFileTime:

Waktu File dan CDFS

Stempel tanggal dan waktu file yang terletak di atau berasal dari media menggunakan Compact Disc File System (CDFS) disesuaikan untuk zona waktu lokal. ISO 9660 menyatakan bahwa CDFS adalah menampilkan informasi tanggal dengan benar untuk zona waktu lokal. Ini dilakukan agar tanggal untuk file di CDFS ditampilkan sama dengan yang ada di Universal Disk Format (UDF). UDF adalah standar yang lebih baru untuk media distribusi. Jika kode Anda bergantung pada informasi tanggal yang tidak dimodifikasi untuk file yang berada di atau berasal dari media menggunakan CDFS, kode tersebut mungkin tidak berfungsi dengan benar.