转载: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. Ubuntu安装mysql及设置远程访问方法

    ubuntu上安装mysql非常简单只需要几条命令就可以完成. 1. sudo apt-get install mysql-server   2. apt-get isntall mysql-clie ...

  2. c字符检测函数

    isalpha(c)    /*判断是否为英文字符*/iscntrl(c)     /*判断是否为控制字符*/ isdigit(c)     /*判断是否为阿拉伯数字0到9*/isgraph(c)   ...

  3. Why String is Immutable or Final in Java

    The string is Immutable in Java because String objects are cached in String pool. Since cached Strin ...

  4. hibernate注解(二)mappedBy

    1.双向关系中使用mappedBy避免生成中间表 (1).只有OneToOne,OneToMany,ManyToMany上才有mappedBy属性,ManyToOne不存在该属性: (2).mappe ...

  5. 【CSS3】CSS3自学

    CSS3学习网址:http://www.runoob.com/css3/css3-tutorial.html

  6. 帝国cms栏目别名怎样调用?栏目名称太短了

    在用帝国cms创建栏目时一般会填写栏目名称(较短)和栏目别名(为空则与栏目名相同),栏目别名可以设置长一些作为栏目标题,可是如何调用帝国cms栏目别名呢?默认的模板标题调用是<title> ...

  7. PAT 1064 Complete Binary Search Tree[二叉树][难]

    1064 Complete Binary Search Tree (30)(30 分) A Binary Search Tree (BST) is recursively defined as a b ...

  8. LeetCode--53 最大连续子序列(总结)

    # 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. # 示例:# 输入: [-2,1,-3,4,-1,2,1,-5,4],# 输出: 6# 解释 ...

  9. java多态性方法的重写Overriding和重载Overloading详解

    java多态性方法的重写Overriding和重载Overloading详解 方法的重写Overriding和重载Overloading是Java多态性的不同表现.重写Overriding是父类与子类 ...

  10. Windows2008 IIS配置FTP站点

    视频教程:http://vodcdn.video.taobao.com/player/ugc/tb_ugc_pieces_core_player_loader.swf?version=1.0.2015 ...