Windows获取时间函数(使用GetLocalTime,GetSystemTime,SystemTimeToTzSpecificLocalTime,GetFileTime API函数
获取本地时间
typedef struct _SYSTEMTIME {
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME,
*PSYSTEMTIME;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
1.GetLocalTime获取的是本地时区时间
SYSTEMTIME localSysTime;
GetLocalTime(&localSysTime);
- 1
- 2
2.GetSystemTime获取的是UTC时间
SYSTEMTIME utcSysTime;
GetSystemTime(&utcSysTime);
- 1
- 2
Note:
UTC(Universal Time Coordinated),协调世界时,又称世界标准时间或世界协调时间.
UTC与格林尼治平均时一样,都与英国伦敦的本地时相同.
整个地球分为二十四个时区,每个时区都有自己的本地时间.
北京时区是东八区,领先UTC八个小时.(UTC+8)
伦敦时间为UTC+0.
也就是说,若全球标准时间是2012-07-04 00:00:00,则北京时间为2012-07-04 08:00:00.
3.UTC时间和具体时区时间的转换
<1> UTC Time –> Local Time
BOOL WINAPI SystemTimeToTzSpecificLocalTime(
__in LPTIME_ZONE_INFORMATION lpTimeZone,
__in LPSYSTEMTIME lpUniversalTime,
__out LPSYSTEMTIME lpLocalTime
);
- 1
- 2
- 3
- 4
- 5
lpTimeZone
A pointer to a TIME_ZONE_INFORMATION structure that specifies the time zone of interest.
If lpTimeZone is NULL, the function uses the currently active time zone.
所以将lpTimeZone设为NULL就会将UTC时间转换为本地时间
<2> Local Time –> UTC Time
BOOL WINAPI TzSpecificLocalTimeToSystemTime(
__in LPTIME_ZONE_INFORMATION lpTimeZoneInformation,
__in LPSYSTEMTIME lpLocalTime,
__out LPSYSTEMTIME lpUniversalTime
);
- 1
- 2
- 3
- 4
- 5
类同.
File Time
我们在Windows系统中获取文件的创建时间,存取时间,修改时间可以使用下面的API.
BOOL WINAPI GetFileTime(
__in HANDLE hFile,
__out LPFILETIME lpCreationTime,
__out LPFILETIME lpLastAccessTime,
__out LPFILETIME lpLastWriteTime
);
- 1
- 2
- 3
- 4
- 5
- 6
获取的时间为UTC FILETIME.
typedef struct _FILETIME {
DWORD dwLowDateTime;
DWORD dwHighDateTime;
} FILETIME, *PFILETIME;
- 1
- 2
- 3
- 4
Contains a 64-bit value representing the number of 100-nanosecond intervals since January 1, 1601.
表示从时间1601-06-01起的100纳秒间隔数.
对于时间的显示,使用SYSTEMTIME为好.
而对于时间的计算&比较,使用FILETIME为好.
Note:使用GetFileTime获取的FILETIME为UTC FILETIME.
FILETIME比较函数:
LONG WINAPI CompareFileTime(
__in const FILETIME* lpFileTime1,
__in const FILETIME* lpFileTime2
);
- 1
- 2
- 3
- 4
-1— First file time is earlier than second file time.
0 —- First file time is equal to second file time.
1 —- First file time is later than second file time.
FILETIME <–> SYSTEMTIME
FileTimeToSystemTime
SystemTimeToFileTime
FileTimeToLocalFileTime
LocalFileTimeToFileTime
对于利用GetFileTime获取的UTC FILETIME怎样转换为Local SYSTEMTIME
GetFileTime–>UTC FILETIME–>(FileTimeToSystemTime)–>UTC SYSTEMTIME–>(SystemTimeToTzSpecificLocalTime)–>Local SYSTEMTIME
GetFileTime–>UTC FILETIME–>(FileTimeToLocalFileTime)–>Local FILETIME–>(FileTimeToSystemTime)–>Local SYSTEMTIME
时间间隔的运算
将FILETIME–>LARGE_INTEGER,再通过LARGE_INTEGER进行运算
typedef union _LARGE_INTEGER {
struct {
DWORD LowPart;
LONG HighPart;
};
struct {
DWORD LowPart;
LONG HighPart;
} u;
LONGLONG QuadPart;
} LARGE_INTEGER, *PLARGE_INTEGER;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
eg:
FILETIME time1;
FILETIME time2;
LARGE_INTEGER liTime1;
LARGE_INTEGER liTime2;
liTime1.LowPart = time1.dwLowDateTime;
liTime1.HighPart = time1.dwHighDateTime;
liTime2.LowPart = time2.dwLowDateTime;
liTime2.HighPart = time2.dwHighDateTime;
LARGE_INTEGER liElapsedTime;
liElapsedTime.QuadPart = liTime2.QuadPart - liTime1.QuadPart;
liElapsedTime.QuadPart /= 10000000; //相差的秒数
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
时间的转换公式:
1微秒 = 1000 纳秒
1毫秒 = 1000 微秒
1秒 = 1000毫秒
http://blog.csdn.net/hisinwang/article/details/45116133
Windows获取时间函数(使用GetLocalTime,GetSystemTime,SystemTimeToTzSpecificLocalTime,GetFileTime API函数的更多相关文章
- windows获取时间的方法
介绍 我们在衡量一个函数运行时间,或者判断一个算法的时间效率,或者在程序中我们需要一个定时器,定时执 行一个特定的操作,比如在多媒体中,比如在游戏中等,都会用到时间函数.还比如我们通过记录 ...
- Windows高精度时间
目录 第1章计时 1 1.1 GetTickCount 1 1.2 timeGetTime 1 1.3 QueryPerformanceCounter 1 1.4 测试 ...
- 如何通过HOOK改变windows的API函数(找到函数的相对偏移)
我们知道,系统函数都是以DLL封装起来的,应用程序应用到系统函数时,应首先把该DLL加载到当前的进程空间中,调用的系统函数的入口地址,可以通过GetProcAddress函数进行获取.当系统函数进行调 ...
- 2、FreeRTOS任务相关API函数
1.任务相关的API函数 函数存在于task.c中,主要的函数有: xTaskCreate():使用动态的方法创建一个任务: xTaskCreatStatic():使用静态的方法创建一个任务(用的非常 ...
- Delphi获取当前系统时间(使用API函数GetSystemTime)
在开发应用程序时往往需要获取当前系统时间.尽管Y2K似乎已经平安过去,但在我们新开发的应用程序中还是要谨慎处理“时间”问题. 在<融会贯通--Delphi4.0实战技巧>(以下简称“该书” ...
- 【转载】c/c++在windows下获取时间和计算时间差的几种方法总结
一.标准C和C++都可用 1.获取时间用time_t time( time_t * timer ),计算时间差使用double difftime( time_t timer1, time_t time ...
- c/c++在windows下获取时间和计算时间差的几种方法总结 【转】
http://blog.csdn.net/coder_xia/article/details/6566708 一.标准C和C++都可用 1.获取时间用time_t time( time_t * tim ...
- c和c++在windows下获取时间和计算时间差的方法总结
c/c++在windows下获取时间和计算时间差的几种方法总结 一.标准C和C++都可用 1.获取时间用time_t time( time_t * timer ),计算时间差使用double diff ...
- 获取时间SQL函数语句
1.获取时间 获取当天的数据 where DATEDIFF (DD, 数据库中时间的字段 ,GETDATE())=0 查询24小时内的 where DATEDIFF (HH, 数据库中时间的字段 ...
随机推荐
- 【河南省多校脸萌第六场 A】巴什博弈?
[链接]http://acm.nyist.me/JudgeOnline/problem.php?cid=1013&pid=5 [题意] 在这里写题意 [题解] 0..a-1 YES a..a+ ...
- 人工智能计算器AI Calculator 3.3.0 具体破解思路&教程
人工智能计算器AI Calculator 3.3.0 具体破解思路&教程 [文章标题]:人工智能计算器AI Calculator 3.3.0 具体破解思路&教程 [文章作者]: Eri ...
- 微软重生:4年市值U型大逆转,超越谷歌重返巅峰!
划重点: 智东西(公众号:zhidxcom)文 | 寓扬 在最近的两个星期里,微软和谷歌正在进行一场市值大比拼,双方在7700亿美元上下厮杀正紧,抢夺着全球市值第三大公司的宝座(前两位为市值超过900 ...
- Virtualizing memory type
A processor, capable of operation in a host machine, including memory management logic to support a ...
- Oracle分页查询的一个存储过程:
create or replace procedure AspNetOraclePager( tableName in varchar2, --表名 fields in var ...
- 【例题 6-5 UVA 12657 】Boxes in a Line
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 双向链表模拟题. 移动的时候,要注意它就在所需要的位置的情况.那种情况不移动. (如果已经在所需位置了,还用链表的插入方式强行移动的 ...
- Helloworld之Spring依赖注入/控制反转(DI/IoC)版
Helloworld之Spring依赖注入/控制反转(DI/IoC)版 作者:雨水, 日期:2014-10-29 摘要:本文主要用于培训刚開始学习的人理解Spring中的依赖注入的基本概念. 先介绍依 ...
- ARM 授权费用太贵 科技巨头欲转向开源架构 RISC-V
不久前,特斯拉加入 RISC-V 基金会,并考虑在新款芯片中使用免费的 RISC-V 设计.至此,已有 IBM.NXP.西部数据.英伟达.高通.三星.谷歌.华为等 100 多家科技公司加入 RISC- ...
- js课程 2-7 for-in循环怎么使用
js课程 2-7 for-in循环怎么使用 一.总结 一句话总结:用的是in的作用加上for的作用,相当于一个组合技. 1.js中in运算符的作用是什么? 判断一个元素是否在一个集合或者对象中 1.a ...
- POJ 1258 Agri-Net|| POJ 2485 Highways MST
POJ 1258 Agri-Net http://poj.org/problem?id=1258 水题. 题目就是让你求MST,连矩阵都给你了. prim版 #include<cstdio> ...