c++ 时间函数全攻略

最近在做操作系统相关的实验,其中经常用到获取系统的时间等函数,现在总结一下。
概念: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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值