决定开始写时,是因为工作中用到这几个函数,还被糊涂的浪费了很多时间。
函数localtime的输入是一个time_t,表示距离midnight, January 1, 1970的秒数。返回的是本地的时间,不是UTC时间,中国的时间比UTC快8个小时。特别需要说明的是如果你要计算当前时间所代表的time_t值,就要先把当前时间转化为UTC的时间,然后再与midnight, January 1, 1970相减。
函数time返回的正是localtime输入所需要的。它是当前本地时间对应的UTC时间,距离midnight, January 1, 1970的秒数。你也可以算出来。
函数mktime的作用就是计算某一本地时间对应的UTC时间,距离midnight, January 1, 1970的秒数。需要着重说明的是输入的tm结构是本地的时间,而不是UTC时间,这意味着同样的tm结构输入,在不同时区的操作系统下,mktime返回的不一样哦。
Windows下有个TzSpecificLocalTimeToSystemTime,就是把本地时间转化为UTC时间,还有逆转换SystemTimeToTzSpecificLocalTime。想想吧文件时间为什么是UTC的呢,因为不同地区的时间是不一样的时区,所以如果不是UTC格式,在不同的地区,所表示的就不是文件实际创建和修改的时间,而UTC的时间可以根据时区转化为本地时间。
SystemTimeToFileTime和FileTimeToSystemTime是两种时间单位的互换。其中SystemTime是UTC时间。
有一个函数GetSystemTime得到的也是UTC时间。
如果你遇到计算出来的时间和当前系统时间有偏差,很可能是本地时间与UTC时间的偏差没有考虑的原因。