INFO: Práca s FILETIME štruktúra

Preklady článku Preklady článku
ID článku: 188768 - Zobraziť produkty, ktorých sa tento článok týka.
Rozbaliť všetko | Zbaliť všetko

Na tejto stránke

SUHRN

Súbor čas predstavuje konkrétny dátum a čas na ktoré daného súboru bol vytvorený, naposledy prístupné alebo poslednej písomné. Súbor času je uložená v FILETIME štruktúra. Táto štruktúra sa používa s rôznymi rozhranie API systému Win32 hovory.

DALSIE INFORMACIE

FILETIME štruktúra predstavuje počet 100-počítadla intervaloch od 1. januára 1601. Štruktúra sa skladá z dvoch 32-bitové hodnoty, kombinovať tvoriť 64-bitová hodnota.
   typedef struct _FILETIME {
     DWORD dwLowDateTime;
     DWORD dwHighDateTime;
   } FILETIME;
				
Všimnite si, že FILETIME štruktúra je založená na 100-počítadla intervaloch. To je užitočné definovať nasledujúce symboly pri práci s súbor krát. Napríklad:
   #define _SECOND ((int64) 10000000)
   #define _MINUTE (60 * _SECOND)
   #define _HOUR   (60 * _MINUTE)
   #define _DAY    (24 * _HOUR)
				

Vykonávajúci aritmetický s súbor krát

Často je potrebné vykonávať jednoduché aritmetické na súbor krát. Pre napríklad budete musieť vedieť, keď súbor je 30 dní staré. Vykonávať aritmetické včas súbor, musíte konvertovať FILETIME na quadword (64-bitové celé číslo), vykonávať aritmetické a potom prekonvertovať výsledok Späť na FILETIME.

Za predpokladu, že ft je FILETIME konštrukcia obsahujúce čas vytvorenia súboru, nasledujúci kód vzorky pridá 30 dní čas:
   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 );
				

Nastavenie súboru krát

Súbor krát pre súbor môžete nastaviť pomocou funkcie 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.
   );
				
Táto funkcia umožňuje upraviť vytvorenie, posledný prístup a posledného zápisu krát bez zmeny obsahu súboru. Ak chcete použiť túto funkciu, musíte Popisovač musieť otvoriť súbor. Tento súbor rukoväť je možné získať od volajte na CreateFile() alebo OpenFile(). Súbor musí byť otvorený pomocou GENERIC_WRITE prístup. Po súbor krát boli stanovené, by ste mali prepustenie do popisovača súboru prostredníctvom výzvy na CloseHandle().

Za predpokladu, že szFilename je platný názov súboru a ft je FILETIME konštrukcia, nasledujúcich vzorového kódu nastaví dátum vytvorenia súboru na čas obsiahnutých 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);
   }
				

Zobrazenie súboru časov

Súbor času je založený na koordinovaný svetový čas (UTC). Založené na UTC čas je voľne definovaný ako aktuálny dátum a čas dňa v Greenwich, V Anglicku. Budete pravdepodobne chcieť zobraziť súbor čas s ohľadom na miestny čas (t. j. dátum a čas pre vašu časovú zónu). Vykonaná akcia to tak, môžete použiť FileTimeToLocalFileTime() takto:
   BOOL FileTimeToLocalFileTime(
     CONST FILETIME *lpFileTime,  // Pointer to UTC file time to convert.
     LPFILETIME lpLocalFileTime   // Pointer to converted file time.
   );
Táto funkcia používa aktuálne nastavenia pre časové pásmo a letný čas. Preto, ak je letný čas, to funkcia bude zohľadňovať letný čas, aj keď čase budete sú konverzie je normálny čas.

Ak chcete zobraziť súbor čas v vierohodným spôsobom, musíte najprv konvertovať systém času pomocou FileTimeToSystemTime() takto:
   BOOL FileTimeToSystemTime(
     CONST FILETIME *lpFileTime, // Pointer to file time to convert.
     LPSYSTEMTIME lpSystemTime   // Pointer to structure to receive
   );                            // system time.
				
SYSTEMTIME štruktúra predstavuje dátum a čas pomocou jednotlivých členov pre mesiac, deň, rok, deň v týždni, hodinu, minútu, druhý, a milisekundu.

Tiež sa uprednostňuje zobraziť dátum a čas vo formáte konzistentné s aktuálne miestne nastavenie, ktoré sa vybrali pre systém. Môžete to urobiť pomocou GetDateFormat() a GetTimeFormat() nasledovne:
   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.
   );
				
Zadan?m LOCALE_USER_DEFAULT ako prvý parameter týchto funkcií, povedz im to formátovať považovaného dátum a čas podľa predvoleného formát pre aktuálne miestne nastavenie. V tomto prípade môžete prejsť NULL lpFormat parametre.

Predpokladom ft je FILETIME konštrukcia obsahujúce hodnotu UTC takto vzorky kód vytlačí dátum 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 );
				

Vlastnosti

ID článku: 188768 - Posledná kontrola: 19. októbra 2011 - Revízia: 2.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • Microsoft Win32 Application Programming Interface, pri použití s produktom:
    • Microsoft Windows 98 Standard Edition
    • Microsoft Windows Millennium Edition
Kľúčové slová: 
kbapi kbdatetime kbfileio kbinfo kbkernbase kbmt KB188768 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:188768

Odošlite odozvu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com