笔记整理—内核!启动!—linux应用编程、网络编程部分(5)系统时间与信息

        两个时钟名词的概念,GMT为格林尼治时间,以格林尼治时间为全球统一时间。UTC为协调时间,按照市区进行不同地区时间的换算。

        对于计算机而言,时间分点时间与段时间。点时间精确到某一时间;段时间顾名思义为一段时间,例如5分钟、1小时等。 定时器,也就是timer,是用于定时段时间的。实时时钟,RTC,与点时间相关。

        jiffies为linux系统内的全局变量,用于记录jiffies为单位的时间长度的数值,jiffies是一个节拍时间,调度系统工作时,就会按照这个时间做节拍时间,jiffies记录节拍数。

        jiffies开机就有基础数值,当内核每度过一个节拍,则jiffies就会+1,系统时间依照jiffies值进行计算,开机时间=jiffies*节拍时间。

        内核开机时就会读取RTC作为基准时间,对应一个jiffies值,当前RTC-1970-01-01 00:00:00+0000作为开机时间的jiffies时间然后系统运行,每个时钟节拍会对时间进行维护。那么当前时间就=当前jiffies+1970-01-01 00:00:00+0000,就是当前时间。

        RTC的真正作用是在开关机之间提供正确的时间,系统运行过程中RTC可用不起作用,jiffies是一个段时间。

        一个时钟节拍取决于操作系统的配置,一般为10ms或1ms,用HZ表示,1000HZ=1/1000=1ms。

        linux时钟以API形式进行调用,又将API加工为库函数进行调用。

time_t time(time_t *t);返回1970年到现在的时间
其他的API多以这个time函数加工而成

gmtime/localtime将time加工为一个结构体struct tm
使用mktime将struct tm转为time。将struct tm转字符串使用asctime/strftime,time_t转衣服穿用ctime。
gettimeofday由timeval(时间)与timezone(时区)两个结构体表示。
settimeofofday用于设置时间与时区

时间API示例
time()
time_t tNow=0;

返回方式有两种
tNow=time(NULL);不以指针方式返回
time(&tNow);以指针方式返回

ctime();
char *ctime(const time_t *timep);
char *tp=ctime(&tNow);

struct tm *gmtime(const time_t *timer)
struct tm tmNow;
memset(&tmNow,0,sizeof(tmNow));
gmtime_r(&tNow,&tmNow);为gmtime的可重入版本结构体为tmNow.tm_year;tmNow.tm_mon;tmNow.tm_day,其余还有时分秒等,都是从1900,UTC0开始进行的计算

localtime()与gmtime()方式一样,只不过加上了时区(UTC+时区)

time_t mktime(struct tm *tm);用于设置系统时间

asctime()与ctime一样
char *asctime(const struct tm *tm);
tp=asctime(&tmNow);

size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr)支持对format自定义格式设置返回一个*s,大小为max,return返回大小
char buf[100]={0};
memset(buf,0,sizeof(buf));
strftime(buf,sizeof(buf),"%Y-%m-%d,%H-%M-%s",&tmNow);

int gettimeofday(struct timeval *tv, struct timezone *tz);
struct timeval tv;
struct timezone tz;
memset(&tv,0,sizeof(tv));
memset(&tz,0,sizeof(tz));
ret=gettimeofday(&tv,&tz);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值