linux时间精度 linux时间不对怎么调整

大家好,感谢邀请,今天来为大家分享一下linux时间精度的问题,以及和linux时间不对怎么调整的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

linux 怎么设置硬件时钟 UTC

一、首先要弄清几个概念:

1.“系统时间”与“硬件时间”

系统时间:一般说来就是我们执行 date命令看到的时间,linux系统下所有的时间调用(除了直接访问硬件时间的命令)都是使用的这个时间。

硬件时间:主板上BIOS中的时间,由主板电池供电来维持运行,系统开机时要读取这个时间,并根据它来设定系统时间(注意:系统启动时根据硬件时间设定系统时间的过程可能存在时区换算,这要视具体的系统及相关设置而定)。

2.“UTC时间”与“本地时间”

UTC时间:Coordinated Universal 8 e2 i( H7 t0 ^/ ^Time世界协调时间(又称世界标准时间、世界统一时间),在一般精度要求下,它与GMT(Greenwich Mean Time,格林威治标准时间)是一样的,其实也就是说 GMT≈UTC,但 UTC是以原子钟校准的,更精确。

本地时间:由于处在不同的时区,本地时间一般与UTC是不同的,换算方法就是

本地时间= UTC+时区或 UTC=本地时间-时区

时区东为正,西为负,例如在中国,本地时间都使用北京时间,在linux上显示就是 CST(China Standard Time,中国标准时,注意美国的中部标准时Central Standard Time也缩写为CST,与这里的CST不是一回事!),时区为东八区,也就是+8区,所以 CST=UTC+(+8小时)或 UTC=CST-(+8小时)。

二、设置硬件时钟 UTC

硬件时间/sbin/hwclock

直接调用/sbin/hwclock显示的时间就是 BIOS中的时间吗?未必!这要看/etc/sysconfig/clock中是否启用了UTC,如果启用了UTC(UTC=true),显示的其实是经过时区换算的时间而不是BIOS中真正的时间,如果加上--localtime选项,则得到的总是 BIOS中实际的时间.

[12-01 19:07>~]# hwclock

2009年12月07日星期一 14时28分43秒-0.611463 seconds

[12-01 19:07>~]# hwclock--utc

2009年12月07日星期一 14时28分46秒-0.594189 seconds

[12-01 19:07>~]# hwclock--localtime

2009年12月07日星期一 06时28分50秒-0.063875 seconds

三、最后总结

1)/etc/sysconfig/clock文件,只对 hwclock命令有效,且只在系统启动和关闭的时候才有用(修改了其中的 UTC=true到 UTC=false的前后,执行 hwclock(--utc,或--localtime)都没有变化,要重启系统后才生效);

2)/etc/rc.d/rc.sysinit文件,run once at boot time,其中有从硬件时钟同步时间到系统时间的操作;

3)hwclock--localtime的输出,才是硬件时钟真正的时间。如果输出结果带时区(比如CST),还要看/etc/sysconfig/clock里的UTC参数,如果 UTC=false,那时区有意义;如果 UTC=true,那时区没意义,实际上是UTC时间。

4)在/etc/sysconfig/clock中 UTC=false时,date、hwclock、hwclcok--localtime输出的时间应该都一致,且此时 hwclock--utc是没有意义的;

5)在/etc/sysconfig/clock中 UTC=ture时,date、hwclock的输出是一致的,hwclock--localtime的输出则是UTC时间;

6)如果不想在输出中带时区,则 export LANG=C,然后再运行 hwclock就没有什么CST了,免得时区误导你;

7)hwclock--utc容易理解出错

8)系统关闭时会同步系统时间到硬件时钟,系统启动时会从硬件时钟读取时间更新到系统,这2个步骤都要根据/etc/sysconfig/clock文件中UTC的参数来设置时区转换。

python中时间戳小数点后面位数的含义

在Python中,时间戳指的是从1970年1月1日0时0分0秒到当前时间所经过的秒数。如果在Python中使用time.time()函数获取当前时间戳,它会返回一个浮点数,小数点后面的位数表示毫秒或微妙级别的时间精度。

在Python中,时间戳小数点后面位数的具体含义取决于时间戳的使用场景。对于时间戳的某些应用场合,毫秒级别的时间精度就足够了,而对于一些更加精确的应用场合,可能需要微妙级别的时间精度。因此,在使用时间戳时,要结合具体的使用场景,选择合适的时间精度,以保证计算精度和程序的效率。

linux下,记录响应时间的脚本,精确到毫秒ms

gettimeofday(取得目前的时间)

相关函数

time,ctime,ftime,settimeofday

表头文件

#include<sys/time.h>

#include<unistd.h>

定义函数

int gettimeofday( struct timeval* tv, struct timezone* tz)

函数说明

gettimeofday()会把目前的时间有tv所指的结构返回,当地时区的信息则放到tz所指的结构中。

timeval结构定义为:

struct timeval{

long tv_sec;/*秒*/

long tv_usec;/*微秒*/

};

timezone结构定义为:

struct timezone{

int tz_minuteswest;/*和Greenwich时间差了多少分钟*/

int tz_dsttime;/*日光节约时间的状态*/

};

上述两个结构都定义在/usr/include/sys/time.h。tz_dsttime所代表的状态如下

DST_NONE/*不使用*/

DST_USA/*美国*/

DST_AUST/*澳洲*/

DST_WET/*西欧*/

DST_MET/*中欧*/

DST_EET/*东欧*/

DST_CAN/*加拿大*/

DST_GB/*大不列颠*/

DST_RUM/*罗马尼亚*/

DST_TUR/*土耳其*/

DST_AUSTALT/*澳洲(1986年以后)*/

返回值

成功则返回0,失败返回-1,错误代码存于errno。附加说明EFAULT指针tv和tz所指的内存空间超出存取权限。

范例

#include<sys/time.h>

#include<unistd.h>

main(){

struct timeval tv;

struct timezone tz;

gettimeofday(&tv,&tz);

printf(“tv_sec;%d\n”, tv,.tv_sec);

printf(“tv_usec;%d\n”,tv.tv_usec);

printf(“tz_minuteswest;%d\n”, tz.tz_minuteswest);

printf(“tz_dsttime,%d\n”,tz.tz_dsttime);

}

执行

tv_sec: 974857339

tv_usec:136996

tz_minuteswest:-540

tz_dsttime:0

阅读剩余
THE END