Linux应用层中怎么查看系统时间,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、基本概念:
1、linux系统时间和硬件时间:
系统时间:一般来说就是我们执行date命令查看到的时间,Linux系统下所有的时间调用(除了直接访问硬件时间的命令)都是使用这个时间。
硬件时间:主板上BIOS中的时间,由主板电池供电来维持运行,系统开机时要读取这个时间,并根据它来设定系统时间。(注意:系统启动时根据硬件时间设定系统时间的过程可能存在时区换算,这要视具体的系统及相关设置而定)。
2、UTC时间与问题时间:
UTC时间:Coordinated Universal Time,也就是协调世界时,又称世界统一时间,世界标准时间,国际协调时间。在一般精度要求下,它与GMT(Greenwich Mean Time,世界时UT即格林威治标准时间)是一样的。
本地时间:由于处在不同的时区,本地时间一般与UTC是不同的,换算方法是:本地时间 = UTC + 时区。时区东为正,西为负,例如在中国,本地时间都是使用北京时间,在Linux上就是CST(China Standard Time,中国标准时,注意美国的中部标准时Central Standart Time也缩写为CST,与这里的CST不是一回事),时区为东八区,也就是+8区,所以CST = UTC + (+8小时)
例如,我通过时间指令(下面会讲解),查看嵌入式开发板的系统时间和硬件时间如下:
从上图可以看出,正好验证了上面提到的CST = UTC + 时区的关系。
二、时间指令
1、系统时间date
查看系统时间和UTC的操作:直接调用date,可以得到本地时间。如果想得到UTC时间的话,使用date -u;
设置系统时间的操作:格式:#date 月日时分年.秒。例如我之前查看的时间不正确,我要手动更改到现在的时间,输入指令如下:
通过指令也可以查看到,系统时间确实已经更改了。
2. 硬件时间 hwclock
直接调用 hwclock 显示的时间就是 BIOS 中的时间吗?未必!这要看相关配置文件中是否启用了UTC,如果启用了UTC(UTC=true),显示的其实是经过时区换算的时间而不是BIOS中真正的时间,如果加上 –localtime 选项,则得到的总是 BIOS 中实际的时间。查看指令如下:
因为是指令是相继输入,所以不是同一时刻的,但是可以看出,嵌入式开发板里的hwclock指令查看的,就是BIOS中实际的时间。
设置硬件时间的操作:格式:hwclock –set –date==”月/日/年 时:分:秒”。
更多详细指令可以通过man、help指令进行查看。
三、其他常用查看时间指令
1、uptime命令
2、查看/proc/uptime文件计算系统启动时间
第一个数字即是系统已经运行的时间482.15秒,用系统工具date即可计算出系统启动时间,指令如下:结果显示:
3、通过/proc/uptime文件计算系统运行时间,指令如下;结果显示:
4、who命令
who -b #查看最后一次系统启动的时间
5、last rebbot查看Linux系统最后一次启动时间
6、还有一些top、w也可以查看到时间
四、计算系统时间的程序
时间对操作系统来说非常重要,从内核级到应用层,时间的表达方式及精度各部相同。linux内核里面用一个名为jiffes的常量来计算时间的滴答数。而应用层,可以利用time()、localtime()等函数,通过tm结构体得到系统时间。
Linux内核版本为3.0.35的tm结构体如下:
程序中需要用到的函数:
time函数获得日历时间。日历时间,是用“从一个标准时间点到此时的时间经过的秒数”来表示的时间。这个标准时间点对不同的编译器来说会有所不同,但对一个编译系统来说,这个标准时间点是不变的,该编译系统中的时间对应的日历时间都通过该标准时间点来衡量,所以可以说日历时间是“相对时间”,但是无论你在哪一个时区,在同一时刻对同一个标准时间点来说,日历时间都是一样的。
localtime()函数是将日历时间转化为本地时间。
asctime()函数是把timeptr指向的tm结构体中储存的时间转换为字符串字符串格式返格式为:回,Www Mmm dd hh:mm:ss yyyy。其中Www为星期;Mmm为月份;dd为日;hh为时;mm为分;ss 香港云主机为秒;yyyy为年份
最终代码如下:结果显示:
关于Linux应用层中怎么查看系统时间问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注开发云行业资讯频道了解更多相关知识。
这篇文章给大家分享的是有关win8计算机管理无法打开怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、在win8系统桌面上新建一个“文本文档”。2、打开文档,将代码复制进去:Windows registry editor ve…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。