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 mencatat waktu file ketika 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 terlihat 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, jadi itu 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 fungsiGetFileTime. GetFileTime menyalin pembuatan, akses terakhir, dan waktu tulis terakhir ke strukturFILETIMEindividual. Anda juga dapat mengambil waktu file menggunakan fungsiFindFirstFile dan FindNextFile. Fungsi-fungsi ini menyalin waktu file untuk 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 fungsiSetFileTime. 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 fungsiCompareFileTime. 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 fungsiSystemTimeToFileTime. Anda juga dapat memperoleh waktu sistem dalam strukturFILETIMEdengan memanggil fungsiGetSystemTimeAsFileTime.
Untuk membuat waktu file mudah ditampilkan kepada pengguna, gunakan fungsiFileTimeToSystemTime. FileTimeToSystemTime mengonversi waktu file dan menyalin bulan, hari, tahun, dan waktu dari waktu file ke strukturSYSTEMTIME.
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 fungsiFileTimeToLocalFileTime. 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 berada dalam waktu standar.
Sistem file FAT mencatat waktu pada disk pada 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 yang di-cache yang GetFileTime ambil 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 memperhitungkan waktu musim panas saat mengonversi waktu file ke waktu lokal, gunakan urutan fungsi berikut alih-alih menggunakan FileTimeToLocalFileTime:
- FileTimeToSystemTime
- SystemTimeToTzSpecificLocalTime
- SystemTimeToFileTime
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 sehingga 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.