转载:http://sunnysab.blog.163.com/blog/static/18037500920134221295425/

struct _FILETIME {     //结构体定义
DWORD dwLowDateTime;
DWORD dwHighDateTime;
} FILETIME;

//FILETIME 结构表示 1601 年 1 月 1 日以来 100 纳秒为间隔数。结构包含的这两个DWORD值组合在一起

//形成一个 64 位值的 32 位值。

typedef struct _SYSTEMTIME {
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;
头文件:
#include <windows.h> //只需要这一个  FILETIME Filetime;
 SYSTEMTIME Systemtime; 接着,设置日期和时间,我们这里设置成1999年1月1日 01:01:01:
Systemtime.wDay = ;
Systemtime.wYear = ; //记住,一定要大于1601,因为FILETIME的时间是从1601年1月1日开始的
//如果不大于1601,SetFileTime()会返回false,GetLastError()
//返回78 (无效参数)
Systemtime.wMonth = ;
Systemtime.wHour = ;
Systemtime.wMinute =;
Systemtime.wDayOfWeek = ;
Systemtime.wSecond = ;
Systemtime.wMilliseconds = ;
转换SystemTime为Filetime结构:
SystemTimeToFileTime( &Systemtime, &Filetime );
由于SetFileTime()需要文件句柄,所以只好用CreateFile()打开这个文件(微软官方实例)
HANDLE hFile = CreateFile( "C:\\测试.txt",
GENERIC_WRITE, //这个必须有
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
,
NULL );
if (hFile != INVALID_HANDLE_VALUE)
{
SetFileTime( hFile, &Filetime, &Filetime, &Filetime );
CloseHandle(hFile);
}
注:SetFileTime函数
函数原型:
BOOL SetFileTime(   //返回值:TRUE表示成功,FALSE表示失败

     HANDLE hFile,                     // 文件句柄
CONST FILETIME *lpCreationTime, // 文件创建时间
CONST FILETIME *lpLastAccessTime, // 最后访问时间
CONST FILETIME *lpLastWriteTime // 最后修改时间
);
 你运行试试看,是不是OK了?不,远远不是。我们来看看程序运行后文件的创建时间:

你会问,怎么是1999年1月1日,9:01:01?我们明明设置的是1999年1月1日,1:01:01啊!这个问题我也纠结了好半天,最后总算找到了答案:时区!

我国标准北京时间是GMT+8:00,所以你只要把时间设为GMT标准时间就可以了,不过还得再说明一下,如果你调成GMT(格林威治时间)的话,还是会有1小时的误差,也就是说Microsoft Windows的文件时间不是按的GMT(格林威治时间)来计算的。我们只要把时区调成GMT(协调世界时)就可以了。
或者,在程序中这样修改一下:

Systemtime.wDay = 31;
  Systemtime.wYear = 1998;
  Systemtime.wMonth = 12;
  Systemtime.wHour = 17;
  Systemtime.wMinute = 1;
  Systemtime.wDayOfWeek = 1;
  Systemtime.wSecond = 1;
  Systemtime.wMilliseconds = 1;

2.文件修改时间

转载:https://www.xuebuyuan.com/541894.html

CString GetModifyTime(CString appname)
{
WIN32_FIND_DATA ffd ;
HANDLE hFind = FindFirstFile(appname,&ffd);
SYSTEMTIME stUTC, stLocal;
FileTimeToSystemTime(&(ffd.ftLastWriteTime), &stUTC);
SystemTimeToTzSpecificLocalTime(NULL, &stUTC, &stLocal); CString strTmp;
strTmp.Format("%d-%d-%d,%d:%d", stLocal.wYear,stLocal.wMonth,stLocal.wDay,stLocal.wHour,stLocal.wMinute);
}

VC++ 实现修改文件创建、访问、修改时间属性(转载)的更多相关文章

  1. python 修改文件的创建时间、修改时间、访问时间

    目录 python 修改文件创建.修改.访问时间 方案一 方案二(无法修改文件创建时间) python 修改文件创建.修改.访问时间 突如其来想知道一下 python 如何修改文件的属性(创建.修改. ...

  2. python添加、修改、删除、访问类对象属性的2种方法

    1.直接添加.修改.删除.访问类对象属性 class Employee (object): empCount = 0 def __init__(self, name, salary) : self.n ...

  3. PHP获得文件创建、修改、访问时间 filectime() filemtime() fileatime()

    转载博客 零度_PHP的博客   http://blog.sina.com.cn/s/blog_8edc37a801016hk1.html PHP获得文件创建.修改.访问时间 PHP filectim ...

  4. 用 C# 轻松读取、改变文件的创建、修改、访问时间

    创建时间是文件存入到电脑中的时间,而修改时间则是改变起内容的最后时间 // 读取文件的创建.修改.访问时间FileInfo fi = new FileInfo("C://test.txt&q ...

  5. C# 轻松读取、改变文件的创建、修改、访问时间 z

    // 读取文件的创建.修改.访问时间FileInfo fi = new FileInfo("C://test.txt");Console.WriteLine(fi.Creation ...

  6. touch修改文件的修改时间和访问时间,ls --full-time显示文件详细,stat命令

    1. 同时修改文件的修改时间和访问时间 touch -d "2010-05-31 08:10:30" test.doc 2. 只修改文件的修改时间 touch -m -d &quo ...

  7. linux 修改文件的时间属性

    二.修改文件时间 创建文件我们可以通过touch来创建.同样,我们也可以使用touch来修改文件时间.touch的相关参数如下: -a : 仅修改access time. -c : 仅修改时间,而不建 ...

  8. node实现文件属性批量修改(时间属性)

    前言 在默认情况下,一个文件的创建时间和修改时间是系统自己设定的,我们不能修改该的.但我们有时为了某种特殊需要,为了不让别人一眼看出文件已经给修改了,我们又需要修改文件的创建时间和修改时间.那么如何修 ...

  9. C#/.NET 读取或修改文件的创建时间和修改时间

    手工在博客中添加 Front Matter 文件头可是个相当费事儿的做法,这种事情就应该自动完成. .NET 中提供了非常方便的修改文件创建时间的方法,使用这种方法,能够帮助自动完成一部分文件头的编写 ...

随机推荐

  1. Python:闭包

    闭包(Closure) 在一个函数内部定义另一个函数,然后内部函数用到外部函数的变量,把内部函数以及用到的外部变量,合称闭包. 首先复习一下 命名空间与作用域 我们可以把命名空间看做一个大型的字典类型 ...

  2. Ubuntu 14.04 配置 LAMP+phpMyAdmin PHP开发环境!

             先安装 Apache Web服务器,终端:sudo apt-get install apache2  apache2-doc,然后测试是否安装成功.浏览器地址栏输入:http://l ...

  3. redux+react-redux+示例的快速上手体验

    刚学习redux的同学提供一些可供参考的例子. 之前用vue用了很久 vue的语法糖用起来是真的舒服  react 其实毕竟他们都是类似的框架, 虽然语法大不同, 但是有些地方的思想还是很像的, 废话 ...

  4. curl获取公网IP地址

    curl ip.cn curl cip.cc https://blog.csdn.net/orangleliu/article/details/51994513 https://blog.csdn.n ...

  5. MySql关联子查询

    mysql有时候把子查询优化的很差,最差的情景就是 在where子句中使用in. -----<高性能mysql第二版>4.4.1

  6. ICMP报文

    类型:表示ICMP消息类型 代码:表示同一消息的不同信息 其他是时间戳或者标识符及序列号 类型 编码 描述   0 0 Echo Reply 3 0 网络不可达 3 1 主机不可达 3 2 协议不可达 ...

  7. OC 手势可能出现的问题

    oc手势有分別是 Tap(点一下).Pinch(二指往內或往外拨动).Rotation(旋转).Swipe(滑动,快速移动).Pan (拖移,慢速移动)以及 LongPress(长按). UITapG ...

  8. jQuery内部原理和实现方式浅析

    这篇文章主要介绍了jQuery内部原理和实现方式浅析,本文试图从整体来阐述一下jQuery的内部实现,需要的朋友可以参考下 这段时间在学习研究jQuery源码,受益于jQuery日益发展强大,研究jQ ...

  9. selenium python 启动Firefox

    我的火狐浏览器版本是最新的: 下载geckodrive:https://github.com/mozilla/geckodriver/releases/ 下载完后将exe文件放到这里“D:\firef ...

  10. [LeetCode] 437. Path Sum III_ Easy tag: DFS

    You are given a binary tree in which each node contains an integer value. Find the number of paths t ...