filetime,systemtime相互转化,获取文件创建时间,访问时间,修改时间,获取指定时间之前之后的SYSTEMTIME

2023-11-02

// deleteOldFiles.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <windows.h>
#include <string>
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <sys/types.h>
#include <sys/stat.h>

using namespace std;
#pragma warning(disable:4996)
int main()
{
	//typedef struct _SYSTEMTIME {
	//	WORDwYear;
	//	WORDwMonth;
	//	WORDwDayOfWeek;
	//	WORDwDay;
	//	WORDwHour;
	//	WORDwMinute;
	//	WORDwSecond;
	//	WORDwMilliseconds;
	//} SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;

	//得到当前UTC时间
	SYSTEMTIME st;
	GetSystemTime(&st);
	char buf[128] = { 0 };
	sprintf_s(buf,"%04d-%02d-%02d %02d:%02d:%02d:%03d",st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond,st.wMilliseconds);
	cout << "UTC时间为" << buf << endl;

	//得到本地时间
	SYSTEMTIME stLocal;
	GetLocalTime(&stLocal);
	memset(buf, 0, 128);
	sprintf_s(buf, "%04d-%02d-%02d %02d:%02d:%02d:%03d", stLocal.wYear, stLocal.wMonth, stLocal.wDay, stLocal.wHour, stLocal.wMinute, stLocal.wSecond, stLocal.wMilliseconds);
	cout << "本地时间为" << buf << endl;

	//FileTime:Contains a 64-bit value representing the number of 100-nanosecond intervals since January 1, 1601 (UTC时间).
	//从1601到现在经历的100纳秒数,8个字节变量
	//typedef struct _FILETIME {
	//	DWORDdwLowDateTime;
	//	DWORDdwHighDateTime;
	//} FILETIME, *PFILETIME, *LPFILETIME;

	//SYSTEMTIME转成FILETIME
	//BOOL
	//	WINAPI
	//	SystemTimeToFileTime(
	//		_In_ CONST SYSTEMTIME * lpSystemTime,
	//		_Out_ LPFILETIME lpFileTime
	//	);
	//SYSTEMTIME转FILETIME
	FILETIME ft;
	SystemTimeToFileTime(&st, &ft);
	//FILETIME转SYSTEMTIME
	SYSTEMTIME st2;
	FileTimeToSystemTime(&ft, &st2);
	memset(buf, 0, 128);
	sprintf_s(buf, "%04d-%02d-%02d %02d:%02d:%02d:%03d", st2.wYear, st2.wMonth, st2.wDay, st2.wHour, st2.wMinute, st2.wSecond, st2.wMilliseconds);
	cout << "UTC时间为" << buf << endl;

	//当地时间转UTC时间
	FILETIME ftLocal;
	SystemTimeToFileTime(&stLocal, &ftLocal);
	LocalFileTimeToFileTime(&ftLocal, &ft);
	FileTimeToSystemTime(&ft, &st2);
	memset(buf, 0, 128);
	sprintf_s(buf, "%04d-%02d-%02d %02d:%02d:%02d:%03d", st2.wYear, st2.wMonth, st2.wDay, st2.wHour, st2.wMinute, st2.wSecond, st2.wMilliseconds);
	cout << "UTC时间为" << buf << endl;

	FileTimeToLocalFileTime(&ft, &ftLocal);
	FileTimeToSystemTime(&ftLocal, &stLocal);
	memset(buf, 0, 128);
	sprintf_s(buf, "%04d-%02d-%02d %02d:%02d:%02d:%03d", stLocal.wYear, stLocal.wMonth, stLocal.wDay, stLocal.wHour, stLocal.wMinute, stLocal.wSecond, stLocal.wMilliseconds);
	cout << "本地时间为" << buf << endl;

	//获取十天之前的日期
	ULARGE_INTEGER u1,offset,u2;
	offset.QuadPart = UInt32x32To64(10 * 24 * 3600, 10000000);
	u1.LowPart = ftLocal.dwLowDateTime;
	u1.HighPart = ftLocal.dwHighDateTime;
	u2.QuadPart = u1.QuadPart - offset.QuadPart;
	ftLocal.dwLowDateTime = u2.LowPart;
	ftLocal.dwHighDateTime = u2.HighPart;
	SYSTEMTIME stOld;
	FileTimeToSystemTime(&ftLocal, &stOld);
	memset(buf, 0, 128);
	sprintf_s(buf, "%04d-%02d-%02d %02d:%02d:%02d:%03d", stOld.wYear, stOld.wMonth, stOld.wDay, stOld.wHour, stOld.wMinute, stOld.wSecond, stOld.wMilliseconds);
	cout << "十天前时间为" << buf << endl;

	//获取文件的创建时间,修改时间,访问时间
	HANDLE handleFile = CreateFileW(L"F:\\output\\测试文档.docx", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
	if (handleFile != INVALID_HANDLE_VALUE)
	{
		FILETIME ftCreationTime, ftLastAccessTime, ftLastWriteTime;
		GetFileTime(handleFile, &ftCreationTime, &ftLastAccessTime, &ftLastWriteTime);
		SYSTEMTIME creatTime, accessTime, modifyTime;
		FILETIME ftCreationTimeLocal, ftLastAccessTimeLocal, stLastWriteTimeLocal;
		FileTimeToLocalFileTime(&ftCreationTime, &ftCreationTimeLocal);
		FileTimeToLocalFileTime(&ftLastAccessTime, &ftLastAccessTimeLocal);
		FileTimeToLocalFileTime(&ftLastWriteTime, &stLastWriteTimeLocal);

		FileTimeToSystemTime(&ftCreationTimeLocal, &creatTime);
		FileTimeToSystemTime(&ftLastAccessTimeLocal, &accessTime);
		FileTimeToSystemTime(&stLastWriteTimeLocal, &modifyTime);
		memset(buf, 0, 128);
		sprintf_s(buf, "%04d-%02d-%02d %02d:%02d:%02d:%03d", creatTime.wYear, creatTime.wMonth, creatTime.wDay, creatTime.wHour, creatTime.wMinute, creatTime.wSecond, creatTime.wMilliseconds);
		cout << "创建时间为" << buf << endl;
		memset(buf, 0, 128);
		sprintf_s(buf, "%04d-%02d-%02d %02d:%02d:%02d:%03d", accessTime.wYear, accessTime.wMonth, accessTime.wDay, accessTime.wHour, accessTime.wMinute, accessTime.wSecond, accessTime.wMilliseconds);
		cout << "访问时间为" << buf << endl;
		memset(buf, 0, 128);
		sprintf_s(buf, "%04d-%02d-%02d %02d:%02d:%02d:%03d", modifyTime.wYear, modifyTime.wMonth, modifyTime.wDay, modifyTime.wHour, modifyTime.wMinute, modifyTime.wSecond, modifyTime.wMilliseconds);
		cout << "修改时间为" << buf << endl;
		CloseHandle(handleFile);
	}
    return 0;
}

运行结果:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

filetime,systemtime相互转化,获取文件创建时间,访问时间,修改时间,获取指定时间之前之后的SYSTEMTIME 的相关文章

随机推荐

  • 基于C++的栈的两种实现(数组和链表)

    栈 概述 基本操作 用数组实现栈 用链表实现栈 测试 概述 栈是一种只能在表的顶端进行插入和删除运算的线性表 其主要特点是后进先出 LIFO 或先进后出 FILO 该数据结构的示意图如下 基本操作 函数名 用途 bool empty 判断栈
  • webpack4-react-babel7-antd框架的babelrc文件配置写法

    babelrc文件配置写法 webpack2 babel6的babelrc文件配置 presets env modules false stage 0 stage 2 react plugins react hot loader babel
  • sklean中transform和fit_transform区别

    sklean中transform和fit transform区别 在学习过程中看到在有的代码里 from sklearn preprocessing import StandardScaler sc StandardScaler x tra
  • JWT --- 入门学习

    不知道为什么 不用springboot test测试或者启动类启动 会报这个错误 找不到类路径 1 常见的认证机制 basic auth 每次请求都会携带用户的username password 易被黑客拦截 Cookie auth 我们请
  • Debian10开启路由转发以及配置dhcp中继

    文章目录 1 所需设备 2 任务描述 3 服务搭建 1 所需设备 Debian10需要两块网卡 网卡1 192 168 1 1 24 网卡2 10 1 1 1 24 2 任务描述 Debian10开启路由转发之后才可以启用用dhcp中继 允
  • SQL Server创建数据库和表

    本人第一次写博客 没有什么经验 请多多体谅 文章目录 SQL Server数据库的基础学习1 一 认识数据库 二 创建数据库 三 创建表 SQL Server数据库的基础学习1 一 认识数据库 1 数据库的基本概念 数据库 DataBase
  • 如何通过name获取单选框和复选框选中状态的value值?

    概述 有时候我们会遇到这组情况 就是需要通过单选框的name值获取到当前选中状态的value值 提交到后端 进行数据的修改 那么我们就来看看如何进行获取吧 应用场景 我们有时候需要获取到单选框或者是复选框选中的那个 得到它的value值 传
  • python面对对象实验_Python面向对象实现方法总结

    总结 类的定义 很久以前 语言都是面向过程的 经过计算机科学家的探索 出现了面向对象 面向对象可以解释生活中很多东西 比如人 人就是个对象 有参数 比如器官 身高啥的 有方法 比如跑步 学习等 不扯那么多了 对象就是类 在python中用c
  • Tomcat 配置错误界面

    Tomcat发生错误时跳转到错误页面 注意 5 0下操作需要删除掉注释语句 不然报错 原因未知 一 修改 tomcat 的配置文件 修改 tomcat 的配置文件 当页面发生错误时跳转到指定的页面 在 tomcat 中 web xml 文件
  • 某MR-SDK 手机类型摄像机切换后的脚本切换/添加组件/删除组件

    解决问题 因为该SDK已经自动会识别用户手机类型 因为我需要为摄像机添加OutlineEffect这个脚本 以实现高亮显示 该脚本要求一次只能添加在一个摄像机上 简单写个脚本 using System Collections using S
  • 源码环境下添加系统Service流程

    关于系统服务的分析 以及如何实现添加系统服务 分析详细跳转链接 Android系统服务 SystemService 简介 添加系统Service涉及的文件 修改文件 Android mk api current txt api system
  • C语言带参数的main函数

    在我们刚接触C语言的时候 我们所写的main主函数都是不带参数的 但是的实际开发应用中 大多数情况 带参数的main函数用的最多 不带参数的main函数 int main 实际上是int main void 带参数的main函数 int m
  • [4G&5G专题-27]:架构-UE终端的4G+5G双连接详解

    目录 第1章 什么是多连接 1 1 多连接概述 1 2 多连接的聚合和分离点的分类 1 3 多连接好处 1 4 双连接的本质 1 5 多连接的控制面与数据面连接方法分类 1 6 1C 2U模式下数据承载的三种方式 1 7 分清各种场景的基本
  • 13个你可能未使用过的Python教程!

    Python 是顶级编程语言之一 它具有许多程序员从未使用过的许多隐藏功能 在这篇博客中 我将分享你可能从未使用过的13 个 Python 特性 列表Stepping 这是一个 step 参数 可以通过采取几个步骤来分割你的列表 此外 你可
  • Mybatis-多表联查

    多表联查 一 步骤一 创建pojo实体类 二 步骤二 明确两个实体类之间的关系 三 步骤三 修改pojo实体类 四 步骤四 编写Mapper接口 五 步骤五 编写Mapper映射文件 题目1 通过订单id查询订单详情以及所属用户 题目2 通
  • mysql字段更新拼接_更新数据库中值为拼接字符串的字段

    我们开发系统涉及权限的时候 会处理到用户和角色的关系 通常情况下 我们会建一个用户角色关系映射表 user role mapping 字段有id user id role id 如果某个用户有多个角色 那么在user role mappin
  • C语言课程设计学生籍贯信息,C语言课程设计 学生籍贯信息记录簿设计.doc

    C语言与程序设计课程设计 学生籍贯信息记录簿设计 学 院 信息工程 班 级 物联1301班 学 号 131408119 姓 名 滕玲 一 设计目的 该软件主要是编辑一个学生籍贯信息记录簿记录每个学生信息 包括 学号 姓名 籍贯 具体功能 1
  • flex布局采用justify-content:space-between时,当为两个内容时中间被空出的解决方案

    我们在用flex布局的时候有时会用到justify content space between属性 这个属性是让弹性容器内的元素向两端对齐 div class box div div div div div div div div div
  • 广度优先遍历进阶

    第七周 BFS 广度优先搜索 733 127 130 317 505 529 1263 1197 815 934 广度优先模板 void bfs queue
  • filetime,systemtime相互转化,获取文件创建时间,访问时间,修改时间,获取指定时间之前之后的SYSTEMTIME

    deleteOldFiles cpp 定义控制台应用程序的入口点 include stdafx h include