C++时间与日期操作

2018-02-07  本文已影响25人  046ef6b0df68

文|Seraph

1. 时间换算

1纳秒等于十亿分之一秒(10-9秒)
1 纳秒 = 1000皮秒
1,000 纳秒 = 1微秒
1,000,000 纳秒 = 1毫秒
1,000,000,000 纳秒 = 1秒

2. 时间类型

UTC (Coordinated Universal Time):协调世界时,又称为世界标准时间,也就是大家所熟知的格林威治标准时间(Greenwich Mean Time,GMT)。比如,中国内地的时间与UTC的时差为+8,也就是UTC+8。美国是UTC-5。

Calendar Time:日历时间,是用“从一个标准时间点到此时的时间经过的秒数”来表示的时间。这个标准时间点对不同的编译器来说会有所不同,但对一个编译系统来说,这个标准时间点是不变的,该编译系统中的时间对应的日历时间都通过该标准时间点来衡量,所以可以说日历时间是“相对时间”,但是无论你在哪一个时区,在同一时刻对同一个标准时间点来说,日历时间都是一样的。

epoch:时间点。时间点在标准C/C++中是一个整数,它用此时的时间和标准时间点相差的秒数(即日历时间)来表示。

clock tick:时钟计时单元(而不把它叫做时钟滴答次数),一个时钟计时单元的时间长短是由CPU控制的。一个clock tick不是CPU的一个时钟周期,而是C/C++的一个基本计时单位。

3. 时间数据结构

FILETIME结构持有的64位无符号的文件的日期和时间值。此值表示自1601年1月1日开始的100纳秒为单位的时间。

typedef struct _FILETIME {
DWORD dwLowDateTime; /* 低 32 位 */
DWORD dwHighDateTime; /* 高 32 位 */
} FILETIME, *PFILETIME, *LPFILETIME;

SYSTEMTIME结构定义如下:

SYSTEMTIME STRUCT
{
WORD wYear ; 年
WORD wMonth ;月
WORD wDayOfWeek ;星期,0=星期日,1=星期一...
WORD wDay ;日
WORD wHour ;时
WORD wMinute ;分
WORD wSecond ;秒
WORD wMilliseconds ;毫秒
}SYSTEMTIME ENDS
4. UTC时间操作

公式:UTC + 时区差 = 本地时间

void GetSystemTime(LPSYSTEMTIMElpSystemTime);
void GetLocalTime(LPSYSTEMTIMElpSystemTime);
BOOL SystemTimeToFileTime(
    const SYSTEMTIME* lpSystemTime,
    LPFILETIMElpFileTime
);
BOOL FileTimeToSystemTime(
    const FILETIME* lpFileTime,
    LPSYSTEMTIMElpSystemTime
);
BOOL LocalFileTimeToFileTime(
    const FILETIME* lpLocalFileTime,
    LPFILETIMElpFileTime
);
BOOL FileTimeToLocalFileTime(
       const FILETIME* lpFileTime,
       LPFILETIMElpLocalFileTime
);
上一篇 下一篇

猜你喜欢

热点阅读