GetSystemTime和GetFileTime

标签: Win32API(系统调用) Win32API(系统调用)
8人阅读 评论(0) 收藏 举报
分类:

FILETIME结构包含了文件或目录的日期和时间信息:(自1601年1月1日以来,单位为100纳秒)

typedefstruct _FILETIME {

  DWORD dwLowDateTime; //低32位

  DWORD dwHighDateTime; //高32位

} FILETIME, *PFILETIME;

 

SYSTEMTIME结构包含了用户可识别的系统日期信息:

typedefstruct _SYSTEMTIME {

  WORD wYear;

  WORD wMonth;

  WORD wDayOfWeek;

  WORD wDay;

  WORD wHour;

  WORD wMinute;

  WORD wSecond;

  WORD wMilliseconds;

} SYSTEMTIME, *PSYSTEMTIME;

 

=======================================================

GetSystemTime函数用来获得系统时间:

void WINAPI GetSystemTime(

  __out  LPSYSTEMTIME lpSystemTime

);

 =======================================================

GetFileTime函数用来获得一个文件或目录的创建的时间、最后访问的时间以及最后修改的时间:

BOOL WINAPI GetFileTime(

  __in       HANDLE hFile, //文件或目录句柄

  __out_opt  LPFILETIME lpCreationTime, //返回的创建的日期和时间信息

  __out_opt  LPFILETIME lpLastAccessTime, //返回的最后访问的日期和时间信息

  __out_opt  LPFILETIME lpLastWriteTime //返回的最后修改的日期和时间信息

);

返回值:成功时,返回非零值;失败时,返回零值。

=======================================================

函数FileTimeToSystemTime用来将文件时间格式转换为系统时间格式:

BOOL WINAPI FileTimeToSystemTime(

  __in   const FILETIME *lpFileTime, //文件时间

  __out  LPSYSTEMTIME lpSystemTime //系统时间

);

=======================================================

函数SystemTimeToFileTime则是将系统时间转换成文件时间格式:

BOOL WINAPI SystemTimeToFileTime(

  __in   const SYSTEMTIME *lpSystemTime,

  __out  LPFILETIME lpFileTime

);

=======================================================

将文件时间转换为系统时间的实例如下:

#include <windows.h> 

BOOL SetFileToCurrentTime(HANDLE hFile)

{

    FILETIME ft;

    SYSTEMTIME st;

    BOOL f;

 

    GetSystemTime(&st);              // Gets the current system time

    SystemTimeToFileTime(&st, &ft);  // Converts the current system time to file time format

    f = SetFileTime(hFile,           // Sets last-write time of the file

        (LPFILETIME) NULL,           // to the converted current system time

        (LPFILETIME) NULL,

        &ft);   

 

    return f;

}

下面的代码使用GetFileTime函数来获得文件的最后写入时间:

#include <windows.h>

#include <tchar.h>

#include <strsafe.h>

 

// GetLastWriteTime - Retrieves the last-write time and converts

//                    the time to a string

//

// Return value - TRUE if successful, FALSE otherwise

// hFile      - Valid file handle

// lpszString - Pointer to buffer to receive string

 

BOOL GetLastWriteTime(HANDLE hFile, LPTSTR lpszString, DWORD dwSize)

{

    FILETIME ftCreate, ftAccess, ftWrite;

    SYSTEMTIME stUTC, stLocal;

    DWORD dwRet;

 

    // Retrieve the file times for the file.

    if (!GetFileTime(hFile, &ftCreate, &ftAccess, &ftWrite))

        return FALSE;

 

    // Convert the last-write time to local time.

    FileTimeToSystemTime(&ftWrite, &stUTC);

    SystemTimeToTzSpecificLocalTime(NULL, &stUTC, &stLocal);

 

    // Build a string showing the date and time.

    dwRet = StringCchPrintf(lpszString, dwSize,

        TEXT("%02d/%02d/%d  %02d:%02d"),

        stLocal.wMonth, stLocal.wDay, stLocal.wYear,

        stLocal.wHour, stLocal.wMinute);

 

    if( S_OK == dwRet )

        return TRUE;

    else return FALSE;

}

 

int _tmain(int argc, TCHAR *argv[])

{

    HANDLE hFile;

    TCHAR szBuf[MAX_PATH];

 

    if( argc != 2 )

    {

        printf("This sample takes a file name as a parameter/n");

        return 0;

    }

    hFile = CreateFile(argv[1], GENERIC_READ, FILE_SHARE_READ, NULL,

        OPEN_EXISTING, 0, NULL);

 

    if(hFile == INVALID_HANDLE_VALUE)

    {

        printf("CreateFile failed with %d/n", GetLastError());

        return 0;

    }

    if(GetLastWriteTime( hFile, szBuf, MAX_PATH ))

        _tprintf(TEXT("Last write time is: %s/n"), szBuf);

       

    CloseHandle(hFile);   

}

查看评论

透明位图

Ron GeryMicrosoft 网络开发技术小组摘要这篇文章讨论了在 Microsoft Windows 图形环境中用位图达到透明和屏蔽效果的几种方法,包括通过仿真和使用特殊的驱动器功能。包含其中...
  • ghj1976
  • ghj1976
  • 2000-11-21 10:07:00
  • 1933

《WindowsAPI巡礼》---GetSystemTime和GetFileTime

FILETIME结构包含了文件或目录的日期和时间信息:(自1601年1月1日以来,单位为100纳秒)typedefstruct _FILETIME {  DWORD dwLowDateTime; //...
  • ACE1985
  • ACE1985
  • 2010-07-13 14:48:00
  • 2648

GetFileTime获得文件的时间信息

GetFileTime函数用来获得一个文件或目录的创建的时间、最后访问的时间以及最后修改的时间: 1 BOOL WINAPI GetFileTime( 2 __in HANDLE h...
  • milanleon
  • milanleon
  • 2014-01-10 16:06:32
  • 1115

windows 使用GetLocalTime()和GetSystemTime()所获得的时间不同

[cpp] view plain copy #include    //#include    #include    //#pragma comment(lib,...
  • kulala082
  • kulala082
  • 2016-12-22 10:03:13
  • 1219

GetSystemTime和GetLocalTime的区别

GetSystemTime获得的时间是基于通用协调时(UTC, Universal Time Coordinated)。 GetLocalTime获得的时间是基于本地时间的。如GetLocalTim...
  • yangluoning
  • yangluoning
  • 2013-10-23 15:32:16
  • 935

Windows API ——GetFileTime——获取文件时间

FILETIME结构包含了文件或目录的日期和时间信息:(自1601年1月1日以来,单位为100纳秒) 1 typedef struct _FILETIME { 2 3 DWORD dw...
  • allenltiverson
  • allenltiverson
  • 2013-11-18 20:26:18
  • 736

Windows API一日一练(70)GetSystemTime和GetLocalTime函数

时间是一个非常重要的信息,比如写LOG时,就需要把时间输出来,跟踪程序是什么时候出错的。或者当你开发一个银行交易系统时,就要记录当前交易的时间,以便后面可以输出报表,打印给信用卡用户。根据不同的需求,...
  • caimouse
  • caimouse
  • 2007-11-11 10:11:00
  • 21608

WINAPI: GetSystemTime 和 GetLocalTime函数 的区别

         时间是一个非常重要的信息,比如写LOG时,就需要把时间输出来,跟踪程序是什么时候出错的。或者当你开发一个银行交易系统时,就要记录当前交易的时间,以便后面可以输出报表,打印给信用卡用户...
  • netanimals
  • netanimals
  • 2010-06-20 13:53:00
  • 987

GetLocalTime与GetSystemTime区别

场景 我要得出今天是星期几,使用的是GetSystemTime函数,结果在星期一7:55的时候,得出的星期是周日。很是费解 代码 SYSTEMTIME t; ::GetLocalTi...
  • liuhuili23
  • liuhuili23
  • 2015-07-14 16:58:42
  • 635

VC++获取当前系统时间日期 GetSystemTime()函数的用法

VC++获取当前系统时间日期 GetSystemTime()函数的用法      呵呵 获取时间 函数 每次都是一个 头疼的问题 , 写法也是 千变万化  等于我这总不记得一个函数用法的 ...
  • lp310018931
  • lp310018931
  • 2013-12-28 15:29:50
  • 5824
    个人资料
    等级:
    访问量: 1688
    积分: 994
    排名: 5万+
    文章存档