Teď jste offline a čekáte, až se znova připojí internet.

Váš prohlížeč není podporovaný.

Pokud chcete používat tento web, musíte si aktualizovat prohlížeč.

Aktualizovat na nejnovější verzi Internet Exploreru

INFO: Práce se strukturou FILETIME

Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.

Projděte si také anglickou verzi článku:188768
Souhrn
Čas souboru představuje určité datum a čas, kdy byl daný souborvytvořené, poslední přístup nebo poslední zápis do. Čas souboru uložena vStruktura FILETIME. Tato struktura se používá při různých volání rozhraní Win32 API.
Další informace
Struktura FILETIME představuje počet intervalů 100-nanosecondod 1. ledna 1601. Struktura se skládá ze dvou 32bitové hodnoty,společně tvoří jedinou hodnotu 64-bit.
   typedef struct _FILETIME {     DWORD dwLowDateTime;     DWORD dwHighDateTime;   } FILETIME;				
Všimněte si, že FILETIME struktura je založena na 100 nanosecond intervalech. Jehoje užitečné definovat následující symboly při práci s časy souboru.Například:
   #define _SECOND ((int64) 10000000)   #define _MINUTE (60 * _SECOND)   #define _HOUR   (60 * _MINUTE)   #define _DAY    (24 * _HOUR)				

Provádění aritmetická s časy souboru

Často je nezbytné provést jednoduché aritmetické na čas. Pronapříklad budete muset vědět, kdy je soubor starší 30 dnů. Prováděníaritmetický včas soubor, je nutné převést FILETIME quadword(celé 64-bit), provést aritmetický a výsledek převeďte nazpět na FILETIME.

Za předpokladu, že ft je FILETIME struktura obsahující čas vytvoření souboru,Následující ukázkový kód přidá na dobu 30 dnů:
   ULONGLONG qwResult;   // Copy the time into a quadword.   qwResult = (((ULONGLONG) ft.dwHighDateTime) << 32) + ft.dwLowDateTime;   // Add 30 days.   qwResult += 30 * _DAY;   // Copy the result back into the FILETIME structure.   ft.dwLowDateTime  = (DWORD) (qwResult & 0xFFFFFFFF );   ft.dwHighDateTime = (DWORD) (qwResult >> 32 );				

Čas nastavení

Časy souboru pro soubor, můžete nastavit pomocí funkce SetFileTime().
   BOOL SetFileTime(     HANDLE hFile,                     // Handle to the file.     CONST FILETIME *lpCreationTime,   // Time the file was created.     CONST FILETIME *lpLastAccessTime, // Time the file was last accessed.     CONST FILETIME *lpLastWriteTime   // Time the file was last                                       // written to.   );				
Tato funkce umožňuje změnit vytváření, poslední přístup a posledního zápisu časybeze změny obsahu souboru. Chcete-li tuto funkci použít, musíteMáte popisovač k otevření souboru. Tento popisovač souboru lze získat zvolání funkce CreateFile() nebo OpenFile(). Soubor musí být otevřen sVšeobecné_zápis přístup. Po nastavení času souboru, měli bysteUvolněte popisovač souboru pomocí volání CloseHandle().

Za předpokladu, že szFilename je platný název souboru a strukturu FILETIME ftNásledující ukázkový kód nastaví datum vytvoření souboru na časobsažené v ft:
   BOOL bResult;   HANDLE hFile = CreateFile( szFilename,      GENERIC_WRITE, // The file must be opened with write access.      FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL );   if (hFile != INVALID_HANDLE_VALUE) {      bResult = SetFileTime( hFile, &ft, NULL, NULL );      CloseHandle(hFile);   }				

Zobrazení času souboru

Čas souboru je založen na koordinovaný světový čas (UTC). Založené na čase UTC časaktuální datum a čas, kdy volně podle greenwichského,Anglie. Pravděpodobně chcete zobrazit čas souboru s ohledem namístní čas (datum a čas pro časové pásmo). Kprovést, můžete použít FileTimeToLocalFileTime() takto:
   BOOL FileTimeToLocalFileTime(     CONST FILETIME *lpFileTime,  // Pointer to UTC file time to convert.     LPFILETIME lpLocalFileTime   // Pointer to converted file time.   );
Poznámka, že tato funkce použije aktuální nastavení časového pásma aletní čas. Proto, pokud je letní čas, toFunkce přihlédne letního času, i když čas jejsou převodu je standardní čas.

Chcete-li zobrazit čas souboru srozumitelným způsobem, musíte nejprve převéstk systémovému času pomocí FileTimeToSystemTime() takto:
   BOOL FileTimeToSystemTime(     CONST FILETIME *lpFileTime, // Pointer to file time to convert.     LPSYSTEMTIME lpSystemTime   // Pointer to structure to receive   );                            // system time.				
Struktury SYSTEMTIME představuje datum a čas pomocí jednotlivýchČlenové, měsíc, den, rok, pracovní den, hodinu, minutu, druhý, aMilisekunda.

Je také vhodnější zobrazit datum a čas ve formátu, který je konzistentníaktuální národním prostředí vybraném v systému. To lze provést pomocíGetDateFormat() a GetTimeFormat() takto:
   int GetDateFormat(     LCID Locale,              // Locale for which date is to be formatted.     DWORD dwFlags,            // Flags specifying function options.     CONST SYSTEMTIME *lpDate, // Date to be formatted.     LPCTSTR lpFormat,         // Date format string.     LPTSTR lpDateStr,         // Buffer for storing formatted string.     int cchDate               // Size of buffer.   );   int GetTimeFormat(     LCID Locale,              // Locale for which time is to be formatted.     DWORD dwFlags,            // Flags specifying function options.     CONST SYSTEMTIME *lpTime, // Time to be formatted.     LPCTSTR lpFormat,         // Time format string.     LPTSTR lpTimeStr,         // Buffer for storing formatted string.     int cchTime               // Size of buffer.   );				
Předáním LOCALE_USER_DEFAULT jako první parametr těchto funkcí,ověření pravosti je předaná datum a čas podle výchozí formátováníFormát pro aktuální národní prostředí. V takovém případě můžete předat NULLParametry lpFormat.

Za předpokladu ft je FILETIME struktura obsahující hodnotu UTC, následujícíUkázkový kód Vytiskne data uložená v ft:
   SYSTEMTIME st;   char szLocalDate[255], szLocalTime[255];   FileTimeToLocalFileTime( &ft, &ft );   FileTimeToSystemTime( &ft, &st );   GetDateFormat( LOCALE_USER_DEFAULT, DATE_LONGDATE, &st, NULL,     szLocalDate, 255 );   GetTimeFormat( LOCALE_USER_DEFAULT, 0, &st, NULL, szLocalTime, 255 );   printf( "%s %s\n", szLocalDate, szLocalTime );				

Upozornění: Tento článek je přeložený automaticky

Vlastnosti

ID článku: 188768 - Poslední kontrola: 04/23/2011 16:46:00 - Revize: 5.0

  • Microsoft Win32 Application Programming Interface
  • kbapi kbdatetime kbfileio kbinfo kbkernbase kbmt KB188768 KbMtcs
Váš názor
did=1&t=">0&did=1&t=">did=1&t=">html>