时间

梦想与她 提交于 2020-03-17 09:24:57

时间

时间相关的基本概念:

  • 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
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!