c++ 时间函数全攻略

来源:互联网 发布:java导出excel合并行 编辑:程序博客网 时间:2024/06/15 14:31

最近在做操作系统相关的实验,其中经常用到获取系统的时间等函数,现在总结一下。
概念:gmt: GreenWich mean time //格林威治时间
utc: Coordinated universal time //世界时
格林威治时间由本初子午线有关,但是现在发现不太精确,不再使用。
utc时间由原子钟确定,更加精确,现在表达时区一般这样表达,如北京utc-8。

通用的类:time.h> struct_tm,time_t ,time()
struct_tm{ year,month,….second
} // month[0,11], year=this year - 1900
time_t: 实际上就是long int ,保存了从1970年1月1日到现在的秒数。
time(time_t *): 获得1970年1月1日到现在的秒数

ctime.> gmtime,localtime
gmtime: time_t -> struct_tm ,但是实际上得到的是utc时间
localtime: 得到的是当地时间,与时区有关

特有的类:Linux 下:
sys/time.h> strcut timeval ,struct timezone,gettimeofday()
struct timeval{
second; //应该都是long int
u second; // 微秒
}
timezone: 存储时区信息
gettimeofday(struct timeval*,struct timezone*)

windows下:windows.h> GETSYSTEMTIME,SYSTEMTIME
SYSTEMTIME: year,month,…second, msecond, 毫秒
GETSystemTime(SYSTEMTIME*) //utc
GETLocalTime(SYSTEM*) //local

综上:如果想写跨平台通用的:
time+ctime 就够了,缺点是不能精确到ms
精确到ms:windows+getsystem就够了
linux下: gettimeofday -> timeval ->time_t -> getime -> struct_tm,麻烦一点。

顺便说一下:sleep函数:
windows:
sleep() //parament 是 s
Sleep() //parament 是 ms,毫秒
Linux:
sleep( ) //parament 是 s
usleep() //单位是 us ,微秒

1s= 1000 ms =1000000 us

0 0
原创粉丝点击