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[]);
// for (int i=0; i<_argc; i++)
// printf("%s\n", _argv[i]);
if (_argc <= )
{
printf("_argc : %d\n", _argc);
return ;
}
printf("\n"); FILETIME ftCreateTime={}, ftAccessTime={}, ftWriteTime={};
GetFileTimeZ(_argv[], &ftCreateTime, &ftAccessTime, &ftWriteTime);
SetFileTimeZ(_argv[], &ftCreateTime, &ftAccessTime, &ftWriteTime); return ;
} /// *** 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 = {};
SYSTEMTIME stLocal = {};
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 = {}; 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、

VC.文件时间的更多相关文章

  1. VC++文件操作之最全篇

    一.剖析VC中的文件操作 各种关于文件的操作在程序设计中是十分常见,如果能对其各种操作都了如指掌,就可以根据实际情况找到最佳的解决方案,从而在较短的时间内编写出高效的代码,因而熟练的掌握文件操作是十分 ...

  2. Linux的3个文件时间

    文件的三个时间相信大家都已经很熟悉windows操作系统了,当我们在windows系统下创建一个文件时,系统同时会为这个文件建立相关的参数去描述这个文件,如图: 这些参数包括文件的大小,文件类型,位置 ...

  3. Linux文件时间属性

    Linux文件时间属性                                                                                         ...

  4. 一个简单的反射连接程序(修改文件时间,以及创建Windows服务)

    program SvrDemo; uses  Windows,  WinSvc,  winsock; const  RegName = 'SvrDemo'; var  szServiceName: p ...

  5. [转帖]创建文件或修改文件时间 touch

    Linux命令(五)创建文件或修改文件时间 touch https://www.cnblogs.com/ay-a/p/7900274.html touch -t .x86_64.rpm 记得 wind ...

  6. Linux命令(五)创建文件或修改文件时间 touch

    Linux中 touch 命令可以改变文档或目录时间, 包括存取时间或更改时间, 也可以用于创建新文件. 命令格式: touch [选项] [参数] 选项: -a   只更改文件的读取时间. -m   ...

  7. 十四、文件和目录——文件时间和utime函数

    14.1 文件时间 存在于 stat 结构体中 14.2 文件时间函数 14.2.1 介绍 utime(修改文件的存取时间和更改时间) 相关函数 utimes,stat #include <sy ...

  8. Linux 文件时间记录属性 调优

    Linux 文件时间属性介绍 atime:(access time)显示的是文件中的数据最后被访问的时间,比如系统的进程直接使用或通过一些命令和脚本间接使用.(执行一些可执行文件或脚本) mtime: ...

  9. linux下查看和修改文件时间

    一.查看文件时间及相关命令 1.stat查看文件时间 [root@web10 ~]# stat install.log File: "install.log" Size: 3338 ...

随机推荐

  1. 【js】关于闭包和匿名函数

    关于js闭包.之前我一直以为是匿名函数,以为封闭式的创建即执行销毁就是闭包,其实这是匿名函数,不一样的.也没有闭包的使用经验. 后来去网上查了下才知道,闭包的意思是:函数内部还有函数,返回一个函数,内 ...

  2. Java基础再复习(继承、多态、方法内部类**、HashMap用法**、参数传递**)

    ###继承: package com.shiyan; public class Animal { public int legNum; //动物四肢的数量 //类方法 public void bark ...

  3. Python Selenium element is not reachable by keyboard

    碰到这个问题,没法解决, 最后这么搞的 pcAction.move_by_offset(571, 534).click().perform() #激活输入框 driver.switch_to.acti ...

  4. OL6.3 设置本地yum源

    仅在 Oracle Linux Server release 6.3 上测试 PS:Oracle Linux Server release 6.3仅用于测试,不能用于商业用途 [root@oracle ...

  5. 教你用Visual Studio Code做PHP开发 - 微软官方工具,IDE中的黑马

    转载于:http://bbs.wfun.com/thread-902655-1-1.html,仅供自己备忘 本文为我在智机网的原创  ] 关于Visual Studio Code,可能有的开发者很陌生 ...

  6. 【题解】Luogu P2147 [SDOI2008]洞穴勘测

    原题传送门 这题用Link-Cut-Tree解决,Link-Cut-Tree详解 我不太会踩爆Link-Cut-Tree的并查集做法qaq 我们用Link-Cut-Tree维护连通性(十分无脑) Co ...

  7. nginx的stream反向代理mysql配置

    这里主要记录一下nginx的负载代理stream模块,首先编译的时候需要加上--with-stream, 就像这样 然后nginx.conf里面的配置是在http选项上面加上 #Mysql Rever ...

  8. android拨号

    android:textColor="#A0ff1400" A0表示透明度00完全透明FF完全不透明,后面6位是RGB问题:类中类的findViewById方法为何用不了?解:类中 ...

  9. python简说(二十七)sys.argv

    sys.argv,是获取到运行python文件的时候传入的参数 可以在pycharm中点击 if len(sys.argv)>1: if sys.argv[1]=='--help': quit( ...

  10. 20165310 NstSec2019 Week3 Exp1 逆向与Bof基础

    20165310 NstSec2019 Week3 Exp1 逆向与Bof基础 一.实验内容 实验目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用fo ...