转载: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. iOS多线程编程之创建线程安全(转载)

    一.多线程的安全隐患 资源共享 1块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源 比如多个线程访问同一个对象.同一个变量.同一个文件 当多个线程访问同一块资源时,很容易引发数据错乱和数 ...

  2. java string.getBytes(“UTF-8”) javascript equivalent

    1. byte[] bytes = "test.message".getBytes("UTF-8"); //result: [116, 101, 115, 11 ...

  3. html中载入自执行getElementById("xx")得到null

    <!DOCTYPE HTML> <html> <head> <title>Scope Chain & Closure Example </ ...

  4. IIS/ASP.NET访问共享文件夹的可用方式

    [截止2014-10-14] 网上搜索了很多篇文章,所提及的总共有两种方式: 1.Asp.Net模拟登陆: 例如: 实战ASP.NET访问共享文件夹(含详细操作步骤) 实现一个2008serve的II ...

  5. 使用免费的Let's Encrypt通配符证书 升级我们的网站

    Let's Encrypt通配符证书的官方启用日期:2018年3月13日 也就是说,2018年3月13日之后,我们就可以使用Let's Encrypt通配符证书了,当然是免费的. Let's Encr ...

  6. 2.keras实现-->字符级或单词级的one-hot编码 VS 词嵌入

    1. one-hot编码 # 字符集的one-hot编码 import string samples = ['zzh is a pig','he loves himself very much','p ...

  7. APB总线

    APB(Advance Peripheral Bus)是AMBA总线的一部分,从1998年第一版至今共有3个版本. AMBA 2 APB Specfication:定义最基本的信号interface, ...

  8. HDU 2235

    这题说的是给了一个 平面 然后又很多的长方体柱子 问这个 容器的 容积是什么, 排序后 然后 进行 并查集 判断是否 可以有比他小的高度依靠他算体积,通过并查集去判断他的子集的个数. #include ...

  9. eclipse调优

    基于Eclipse 4.7.0 (Oxygen) 目的:加快eclipse启动速度 修改eclipse安装目录下配置文件eclipse.ini(1)指定eclipse运行的jre,不让其进行搜索-vm ...

  10. JS多重判断 / ES6 includes

    Array.includes ()  判断数组是否包含某个元素 直接返回true或者false表示是否包含元素,对NaN一样能有有效 const arr = ['1', '2', 'a', 'b' , ...