VC.文件时间

1、

#include <stdio.h>
#include <windows.h>

void GetFileTimeZ(char *_pcFullFileName, FILETIME *_pftCreateTime, FILETIME *_pftAccessTime, FILETIME *_pftWriteTime);
void PrintFileTimeZ(FILETIME *_pftCreateTime, FILETIME *_pftAccessTime, FILETIME *_pftWriteTime);
void SetFileTimeZ(char *_pcFullFileName, FILETIME *_pftCreateTime, FILETIME *_pftAccessTime, FILETIME *_pftWriteTime);

int main(int _argc, char** _argv)
{
// 参数:获取 文件"_argv[1]"的创建/访问/写入时间,设置到 文件"_argv[2]"上面去。
    printf("_argc : %d\n", _argc);
    printf("_argv[1] : %s\n", _argv[1]);
//    for (int i=0; i<_argc; i++)
//        printf("%s\n", _argv[i]);
    if (_argc <= 1)
    {
        printf("_argc : %d\n", _argc);
        return 0;
    }
    printf("\n");

    FILETIME ftCreateTime={0}, ftAccessTime={0}, ftWriteTime={0};
    GetFileTimeZ(_argv[1], &ftCreateTime, &ftAccessTime, &ftWriteTime);
    SetFileTimeZ(_argv[2], &ftCreateTime, &ftAccessTime, &ftWriteTime);

    return 0;
}

/// ***

void GetFileTimeZ(char *_pcFullFileName, FILETIME *_pftCreateTime, FILETIME *_pftAccessTime, FILETIME *_pftWriteTime)
{
    HANDLE hFile = CreateFile(_pcFullFileName,              
                              GENERIC_WRITE | GENERIC_READ,  //必须有GENERIC_READ属性才能得到时间     
                              FILE_SHARE_READ,                      
                              NULL,                   
                              OPEN_EXISTING,//TRUNCATE_EXISTING,         
                              FILE_ATTRIBUTE_NORMAL,
                              NULL);                 

    if (hFile == INVALID_HANDLE_VALUE)
    {
        printf("CreateFile return INVALID_HANDLE_VALUE, GetLastError() : %d\n", GetLastError());
        return;
    }

    if ( ! GetFileTime(hFile, _pftCreateTime, _pftAccessTime, _pftWriteTime) )//获取文件时间
    {
        printf("GetFileTime failed, GetLastError() : %d\n", GetLastError());
        CloseHandle(hFile);
        return;
    }

    CloseHandle(hFile);

    PrintFileTimeZ(_pftCreateTime, _pftAccessTime, _pftWriteTime);
}

void PrintFileTimeZ(FILETIME *_pftCreateTime, FILETIME *_pftAccessTime, FILETIME *_pftWriteTime)
{
    SYSTEMTIME st = {0};
    SYSTEMTIME stLocal = {0};
    GetSystemTime(&st);// 这里得到的时间是标准系统时间,也就是0时区的时间。
    GetLocalTime(&stLocal);// 这里得到的是本地时间,也就是标准时间+时区时间

    printf("Local time (now) : \n\t Year:%d, Month:%d, (DayOfWeek:%d,) Day:%d \n\t Hour:%d, Minute:%d, Second:%d, Milliseconds:%d\n",
        stLocal.wYear, stLocal.wMonth, stLocal.wDayOfWeek, stLocal.wDay,
        stLocal.wHour, stLocal.wMinute, stLocal.wSecond, stLocal.wMilliseconds);
    printf("System time (now) : \n\t Year:%d, Month:%d, (DayOfWeek:%d,) Day:%d \n\t Hour:%d, Minute:%d, Second:%d, Milliseconds:%d\n",
        stLocal.wYear, stLocal.wMonth, stLocal.wDayOfWeek, stLocal.wDay,
        stLocal.wHour, stLocal.wMinute, stLocal.wSecond, stLocal.wMilliseconds);
    printf("\n");

//        //将文件时间转换为本地系统时间的两种方式:
//        //(1)
//            FileTimeToLocalFileTime(&fCreateTime,&localTime);//将文件时间转换为本地文件时间
//            FileTimeToSystemTime(&localTime, &sysTime);//将文件时间转换为本地系统时间
//
//        //(2)
//            FileTimeToSystemTime(&fCreateTime, &sysTime);//将文件时间转换为标准系统时间
//            SystemTimeToTzSpecificLocalTime(&sysTime, &sysTime)//将标准系统时间转换为本地系统时间
    
    FILETIME ftLocal = {0};

    if (_pftCreateTime != NULL)
    {
        FileTimeToLocalFileTime(_pftCreateTime, &ftLocal);//将文件时间转换为本地文件时间
        FileTimeToSystemTime(&ftLocal, &stLocal);

        printf("CreateTime (file) : \n\t Year:%d, Month:%d, (DayOfWeek:%d,) Day:%d \n\t Hour:%d, Minute:%d, Second:%d, Milliseconds:%d\n",
            stLocal.wYear, stLocal.wMonth, stLocal.wDayOfWeek, stLocal.wDay,
            stLocal.wHour, stLocal.wMinute, stLocal.wSecond, stLocal.wMilliseconds);
    }
    if (_pftAccessTime != NULL)
    {
        FileTimeToLocalFileTime(_pftAccessTime, &ftLocal);//将文件时间转换为本地文件时间
        FileTimeToSystemTime(&ftLocal, &stLocal);

        printf("AccessTime (file) : \n\t Year:%d, Month:%d, (DayOfWeek:%d,) Day:%d \n\t Hour:%d, Minute:%d, Second:%d, Milliseconds:%d\n",
            stLocal.wYear, stLocal.wMonth, stLocal.wDayOfWeek, stLocal.wDay,
            stLocal.wHour, stLocal.wMinute, stLocal.wSecond, stLocal.wMilliseconds);
    }
    if (_pftWriteTime != NULL)
    {
        FileTimeToLocalFileTime(_pftWriteTime, &ftLocal);//将文件时间转换为本地文件时间
        FileTimeToSystemTime(&ftLocal, &stLocal);

        printf("WriteTime (file) : \n\t Year:%d, Month:%d, (DayOfWeek:%d,) Day:%d \n\t Hour:%d, Minute:%d, Second:%d, Milliseconds:%d\n",
            stLocal.wYear, stLocal.wMonth, stLocal.wDayOfWeek, stLocal.wDay,
            stLocal.wHour, stLocal.wMinute, stLocal.wSecond, stLocal.wMilliseconds);
    }
}

void SetFileTimeZ(char *_pcFullFileName, FILETIME *_pftCreateTime, FILETIME *_pftAccessTime, FILETIME *_pftWriteTime)
{
    HANDLE hFile = CreateFile(_pcFullFileName,              
                              GENERIC_WRITE | GENERIC_READ,  //必须有GENERIC_READ属性才能得到时间     
                              FILE_SHARE_READ,                      
                              NULL,                   
                              OPEN_EXISTING,//TRUNCATE_EXISTING,         
                              FILE_ATTRIBUTE_NORMAL,
                              NULL);                 

    if (hFile == INVALID_HANDLE_VALUE)
    {
        printf("CreateFile return INVALID_HANDLE_VALUE, GetLastError() : %d\n", GetLastError());
        return;
    }

    if ( ! SetFileTime(hFile, _pftCreateTime, _pftAccessTime, _pftWriteTime) )//获取文件时间
    {
        printf("SetFileTime failed, GetLastError() : %d\n", GetLastError());
        CloseHandle(hFile);
        return;
    }

    CloseHandle(hFile);
}

 

2、

3、

 

转载于:https://www.cnblogs.com/cppskill/p/8023696.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值