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. Python cv2 OpenCV 中传统图片格式与 base64 转换

    Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,是一种基于64个可打印字符来表示二进制数据的方法.通过http传输图片常常将图片数据转换成base64之后再进行传输. Base64简 ...

  2. php 加密 解密 密码传输

    php 加密 解密 密码传输 <?php /* * * 使用按位异或运算 加密 * $str 明文 * $salt 盐 * */ public static function xor_encry ...

  3. Yii笔记:打印sql、Form表单、时间插件、Mysql的 FIND_IN_SET函数使用、是否是post/ajax请求

    语句部分: yii1版本打印最后一条执行的SQL: $this->getDbConnection()->createCommand()->select()->from()-&g ...

  4. JavaScript修改元素

    案例1 删除元素 如需删除 HTML 元素,需要清楚该元素的父元素 该js函数代码如下 function remove(){ var parent=document.getElementById(&q ...

  5. dubbo spring pom文件报错:提示no declaration can be found for element 'dubbo:service'.

    pom文件报错:The matching wildcard is strict, but no declaration can be found for  element 'dubbo:service ...

  6. Python 操作 mysql数据库的一个小小的基础案例,小白新手,以备后用~~

    model.py 中的代码 # Create your models here. # 书和作者一对多 class Author(models.Model): name = models.CharFie ...

  7. java开发注意点之String使用equals和==的区别

    "=="操作符的作用 1.用于基本数据类型的比较 2.判断引用是否指向堆内存的同一块地址. equals所在位置: 在Object类当中,而Object是所有类的父类,包含在jdk ...

  8. 标签无效 "/zabbix_export/date": "YYYY-MM-DDThh:mm:ssZ" 预计。

    Centos7.5 使用导入percona模板的时候报错 百度给的解决方案是 将zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1. ...

  9. ThreadPoolExecutor线程池

    为什么使用线程池: 1.创建/销毁线程伴随着系统开销,过于频繁的创建/销毁线程,会很大程度上影响处理效率. 2.线程并发数量过多,抢占系统资源从而导致阻塞. 3.对线程进行一些简单的管理. 在java ...

  10. topcoder srm 510 div1

    problem1 link 令$f(x)$表示[0,x]中答案的个数.那么题目的答案为$f(b)-f(a-1)$ 对于$f(x)$来说,假设$x$有$d$位数字,即$[0,d-1]$,那么可以进行动态 ...