时间
时间相关的基本概念:
- UTC时间:世界统一时间,取代了格林尼治时间
- UNIX纪元时间:1970年1月1号0点开始经过的秒数
- 格林尼治标准时间(GMT):UTC时间出现之前的世界统一时间
如何获取机器时间?
//time函数可以返回机器时间
#include <time.h>
time_t time(time_t *t);
time函数使用实例:
#include <stdio.h>
#include <time.h>
int main()
{
time_t timeNow;
time(&timeNow);
printf("%ld\n",timeNow); //time_t其实是long
return 0;
}
时间转换
time函数返回的是time_t(long)类型的数据,实际上是UNIX纪元时间到当前时间经过的秒数,我刚才运行程序的时候返回的数据是:1584134607
机器返回的数据对于人来说是极不友好的,人们无法直观的发现上面的数据代表的具体时间,因此需要时间转换
tm结构体
//tm结构体用于转换时间,linux终端输入man 3 ctime即可查看详细信息
struct tm {
int tm_sec; /* seconds */
int tm_min; /* minutes */
int tm_hour; /* hours */
int tm_mday; /* day of the month */
int tm_mon; /* month */
int tm_year; /* year */
int tm_wday; /* day of the week */
int tm_yday; /* day in the year */
int tm_isdst; /* daylight saving time */
};
常见的时间转换函数
- char *asctime(const struct tm *tm); //将tm结构体转换为字符串
- char *ctime(const time_t *timep); //将time返回的秒数转换为字符串
- struct tm *localtime(const time_t *timep); //将time返回的秒数转换为tm结构体
时间转换实例
#include <stdio.h>
#include <time.h>
int main()
{
struct tm *t;
time_t timeNow;
time(&timeNow);
t = localtime(&timeNow);
printf("The time(tm):%d-%d-%d %d:%d\n\n",t->tm_year+1970,t->tm_mon+1,t->tm_mday+1,t->tm_hour,t->tm_min);
printf("The time(ctime):%s\n",ctime(&timeNow));
printf("The time(asctime):%s\n",asctime(t));
return 0;
}
程序执行结果如下:
延时
Linux系统的延时函数有两种:sleep、usleep
- sleep是秒延时,参数为秒,延时成功返回0
- usleep是微秒延时,参数为微秒(需要小于1000000),延时成功返回0,失败返回-1
来源:CSDN
作者:Wang-wonk
链接:https://blog.csdn.net/Wangguang_/article/details/104893444