C语言中和时间相关的函数,通常有两种用法:
- 显示当前时间,用于记log、时间和日期的可视化等;
- 记录程序耗时,用于分析、比较某段函数的运行所消耗的时间。
本篇介绍第一种用法,第二种用法可参见:
C函数time和clock的计时区别
首先来认识下库函数的两种数据类型:
- time_t,long型
- struct tm
其中,每个变量的含义如下:
- tm_sec:秒,取值范围 [0, 59]
- tm_min:分,取值范围 [0, 59]
- tm_hour:时,取值范围 [0, 23]
- tm_mday:日期,取值范围 [1, 31]
- tm_mon:月份,取值范围 [0, 11],0代表一月,11代表十二月
- tm_year:年份,其值等于实际年份减去1900
- tm_wday:星期,取值范围 [0, 6],0代表星期天,1代表星期一
- tm_yday:从每年的1月1日开始的天数,取值范围 [0, 365],0代表1月1日,1代表1月2日
1、获取当前的时间的秒数
time_t time(time_t *seconds) 返回自纪元 Epoch(1970-01-01 00:00:00 UTC)起经过的时间,以秒为单位。
time_t now;
在使用时,一般可以通过 now = time(NULL) 获取当前的时间(秒数),也可以通过 time(&now) 获取。
2、获取当前时间的日期
若想直观的得到现在的 年-月-日 时-分-秒 信息,就需要用 struct tm 来显示。
将 time_t 和 struct tm 转换的函数就是 localtime(time_t*) 和 gmtime(time_t*),其返回一个struct tm* 类型,注意是指针类型。
gmtime()函数是将日历时间转化为世界标准时间(即格林尼治时间),并返回一个tm结构体来保存这个时间。而localtime()函数是将日历时间转化为本地时间。
程序示例如下:
运行结果如下: