编程中经常用到时间表达及转换的函数,它们都定义在 time.h 库函数中。其中time函数可以得到当前日历时间或者设置日历时间。今天主要是以实际的例子介绍time函数。
1.时间相关基础知识
(1)世界标准时间Coordinated Universal Time(UTC):
协调世界时,又称世界标准时间,也即格林威治标准时间(Greenwich Mean Time,GMT),中国内地的时间与UTC得时差为+8,也即UTC+8,美国为UTC-5。
(2)日历时间:
日历时间,是用"从一个标准时间点到此时的时间经过的秒数"来表示的时间。标准时间点对不同编译器可能会不同,但对一个编译系统来说,标准时间是不变的。一般是表示距离UTC时间 1970-01-01 00:00:00的秒数。
(3)时间点:
时间点。在标准c/c++中是一个整数,用此时的时间和标准时间点相差的秒数(即日历时间)来表示。
(4)时钟计时单元:
时钟计时单元(而不叫做时钟滴答次数),一个时钟计时单元的时间长短是由cpu控制的,一个clock tick不是cpu的一个时钟周期,而是c/c++的一个基本计时单位。
2.time函数
(1)函数原型
函数原型: time_t time(time_t *timer)
(1)参数说明: timer=NULL时得到当前日历时间
(从1970-01-01 00:00:00到现在的秒数),
timer=时间数值时,用于设置日历时间,
time_t是一个unsigned long类型。
如果 timer不为空,则返回值也存储在变量 timer中。
(2)函数功能: 得到当前日历时间或者设置日历时间
(3)函数返回: 当前日历时
(2)time.h头文件
要使用time(),必须在程序中包含
(3)time.h 的定义
time.h 头文件定义了四个变量类型、两个宏和各种操作日期和时间的函数。
4个变量
size_t 是无符号整数类型,它是 sizeof 关键字的结果。
clock_t 这是一个适合存储处理器时间的类型,类型为unsigned long
time_t 这是一个适合存储日历时间类型。
struct tm 这是一个用来保存时间和日期的结构。
tm 结构的定义如下:
struct tm
{
int tm_sec; /* 秒,范围从 0 到 59 */
int tm_min; /* 分,范围从 0 到 59 */
int tm_hour; /* 小时,范围从 0 到 23 */
int tm_mday; /* 一月中的第几天,范围从 1 到 31 */
int tm_mon; /* 月,范围从 0 到 11(注意) */
int tm_year; /* 自 1900 年起的年数 */
int tm_wday; /* 一周中的第几天,范围从 0 到 6 */
int tm_yday; /* 一年中的第几天,范围从 0 到 365 */
int tm_isdst; /* 夏令时 */
};
两个宏
NULL 这个宏是一个空指针常量的值。
CLOCKS_PER_SEC 这个宏表示每秒的处理器时钟个数。
用于将clock()函数的结果转化为以秒为单位的量,
这个量的具体值是与操作系统相关的,通常为1000。
(4)time()函数使用示例
a.time()函数有两种使用方式:
t1=time(NULL)或t1=time(0)
将空指针传递给time()函数,并将time()返回值赋给变量t1
b. time(&t2);
将变量t2的地址作为实参传递给time()函数,函数自动把结果传递给t2,不需要额外的赋值语句。
3.实例
程序
#include
#include
int main ()
{
time_t sec,sec1,sec2;/*函数原型: time_t time(time_t *timer)*/
sec = time(NULL);
printf("自 1970-01-01 起的小时数 = %ld\n", sec/3600);
printf("自 1970-01-01 起的天数 = %ld\n", (sec/3600)/24);
printf("自 1970-01-01 起的年数 = %ld\n", (sec/3600)/24/365);
sec1 = time(0);
printf("自 1970-01-01 起的小时数 = %ld\n", sec1/3600);
printf("自 1970-01-01 起的天数 = %ld\n", (sec1/3600)/24);
printf("自 1970-01-01 起的年数 = %ld\n", (sec1/3600)/24/365);
time(&sec2);
printf("自 1970-01-01 起的小时数 = %ld\n", sec2/3600);
printf("自 1970-01-01 起的天数 = %ld\n", (sec2/3600)/24);
printf("自 1970-01-01 起的年数 = %ld\n", (sec2/3600)/24/365);
getchar();
return(0);
}
运行结果
4.参考内容
[1] C语言time()函数的用法-CSDN博客
[2] C 语言中的 time 函数总结 | 菜鸟教程
本文内容来源于网络,仅供参考学习,如内容、图片有任何版权问题,请联系处理,24小时内删除。
作 者 | 郭志龙
编 辑 | 郭志龙
校 对 | 郭志龙