Filtider
En filtid är ett 64-bitarsvärde som representerar antalet intervall på 100 nanosekunder som har förflutit sedan 12:00 den 1 januari 1601 Coordinated Universal Time (UTC). Systemet registrerar filtider när program skapar, kommer åt och skriver till filer.
NTFS-filsystemet lagrar tidsvärden i UTC-format, så de påverkas inte av ändringar i tidszon eller sommartid. FAT-filsystemet lagrar tidsvärden baserat på datorns lokala tid. En fil som sparas kl. 15:00 PST i Washington visas till exempel som EST 18:00 i New York på en NTFS-volym, men den ses som 15:00 EST i New York på en FAT-volym.
Tidsstämplar uppdateras vid olika tidpunkter och av olika skäl. Den enda garantin för en filtidsstämpel är att filtiden återspeglas korrekt när handtaget som gör ändringen stängs.
Alla filsystem kan inte registrera skapande och senaste åtkomsttider, och inte alla filsystem registrerar dem på samma sätt. Till exempel är lösningen för att skapa tid på FAT 10 millisekunder, medan skrivtiden har en upplösning på 2 sekunder och åtkomsttiden har en upplösning på 1 dag, så det är verkligen åtkomstdatumet. NTFS-filsystemet fördröjer uppdateringar av den senaste åtkomsttiden för en fil med upp till 1 timme efter den senaste åtkomsten.
Om du vill hämta filtiderna för en angiven fil använder du funktionen GetFileTime. GetFileTime kopierar skapandet, den senaste åtkomsten och de senaste skrivtiderna till enskilda FILETIME- strukturer. Du kan också hämta filtider med hjälp av funktionerna FindFirstFile och FindNextFile. Dessa funktioner kopierar filtiderna till FILETIME- strukturer i en WIN32_FIND_DATA struktur. När du skriver till en fil uppdateras inte den senaste skrivtiden helt förrän alla referenser som används för att skriva stängs.
Om du vill ange filtiderna för en fil använder du funktionen SetFileTime. Med den här funktionen kan du ändra skapande, senaste åtkomst och senaste skrivtider utan att ändra innehållet i filen. Du kan jämföra tiderna för olika filer med hjälp av funktionen CompareFileTime. Funktionen jämför två filtider och returnerar ett värde som anger vilken tid som är senare eller returnerar 0 (noll) om tiderna är lika.
Om du planerar att ändra filtider för angivna filer kan du konvertera ett datum och en tid på dagen till en filtid med hjälp av funktionen SystemTimeToFileTime. Du kan också hämta systemtiden i en FILETIME- struktur genom att anropa funktionen GetSystemTimeAsFileTime.
Om du vill göra en filtid enkel att visa för en användare använder du funktionen FileTimeToSystemTime. FileTimeToSystemTime konverterar filtiden och kopierar månad, dag, år och tid på dagen från filtiden till en SYSTEMTIME- struktur.
Filtider och sommartid
Du måste vara försiktig när du använder filtider om användaren har angett att systemet ska justeras automatiskt för sommartid.
Om du vill konvertera en filtid till lokal tid använder du funktionen FileTimeToLocalFileTime. Men FileTimeToLocalFileTime använder de aktuella inställningarna för tidszonen och sommartid. Om det är sommartid tar det därför hänsyn till sommartid, även om filtiden som du konverterar är i standardtid.
FAT-filsystemet registrerar tider på disken i lokal tid. GetFileTime hämtar cachelagrade UTC-tider från FAT-filsystemet. När det blir sommartid är tiden som hämtas av GetFileTime- av en timme, eftersom cacheminnet inte uppdateras. När du startar om datorn är den cachelagrade tid som GetFileTime- hämtar korrekt. FindFirstFile hämtar den lokala tiden från FAT-filsystemet och konverterar den till UTC med hjälp av de aktuella inställningarna för tidszonen och sommartid. Om det är sommartid tar därför FindFirstFile hänsyn till sommartid, även om filtiden du konverterar är i standardtid.
NTFS-filsystemet registrerar tider på disken i UTC. Om du vill ta hänsyn till sommartid när du konverterar en filtid till en lokal tid använder du följande sekvens med funktioner i stället för att använda FileTimeToLocalFileTime:
Filtider och CDFS
Datum- och tidsstämplarna för filer som finns på eller kommer från media med cdfs (Cdfs) justeras för den lokala tidszonen. ISO 9660 anger att CDFS ska visa datuminformationen korrekt för den lokala tidszonen. Detta görs så att datum för filer på CDFS visas på samma sätt som de i UDF (Universal Disk Format). UDF är den nyare standarden för distributionsmedier. Om koden är beroende av den oförändrade datuminformationen för en fil som finns på eller kommer från media med CDFS kanske den inte fungerar korrekt.