linux时间差
‘壹’ 在linux中用localtime()显示的时间与实际时间不相符,不是与北京时间差8个小时,而是差15个小时
试试修改下时间设置
hwclock --set --date="07/23/2003 11:16:00"
hwclock --hctosys
上面设置的时间为 2003年07月23号 11:16:00自行更改
‘贰’ 用Linux shell 计算两个时间差
start=`date +%s -d "2011-11-28 15:55:37"`
end=`date +%s -d "2011-11-28 15:55:52"`
echo $(($end-$start))
这个前提是你能拿到开始和结束时间字串的基础上的。
如果你的日志文件输出格式是上述的话,还有个方法:
cat 日志文件 | awk '/^000/{
start=$2 " " $3
end=$4 " " $5
stm=mktime(gensub(/[:-]/, " ", "g", start))
etm=mktime(gensub(/[:-]/, " ", "g", end))
print $1 " - " etm-stm
}'
‘叁’ linux系统时间不一致怎么修改
方法/步骤 1 修改系统时间。 linux系统时钟有两个,一个是硬件时钟,即BIOS时间,就是我们进行CMOS设置时看到的时间,另一个是系统时钟,是linux系统Kernel时间。当Linux启动时,系统Kernel会去读取硬件时钟的设置,然后系统时钟就会独立于硬件运作。有时我们会发现系统时钟和硬件时钟不一致,因此需要执行时间同步,下面就分享一下时间设置及时钟同步的命令使用方法。 date命令将日期设置为2014年6月18日 ---- date -s 06/18/14 将时间设置为14点20分50秒 ---- date -s 14:20:50 将时间设置为2014年6月18日14点16分30秒(MMDDhhmmYYYY.ss) ----date 0618141614.30 2 hwclock/clock 命令查看、设置硬件时间 查看系统硬件时钟 hwclock --show 或者 clock --show 设置硬件时间 hwclock --set --date="06/18/14 14:55" (月/日/年时:分:秒)或者# clock --set --date="06/18/14 14:55" (月/日/年时:分:秒) 3 同步系统及硬件时钟。 下图中可以看到硬件和系统时钟相差半小时。可以使用hwclock或者clock进行同步, 硬件时钟与系统时钟同步: # hwclock --hctosys 或者 # clock --hctosys hc代表硬件时间,sys代表系统时间,即用硬件时钟同步系统时钟 系统时钟和硬件时钟同步: # hwclock --systohc或者# clock --systohc 即用系统时钟同步硬件时钟 END 方法/步骤2 时区设置: 开始设置时区时,参考网上的资料,使用tzselect 命令来进行,结果发现tzselect命令只是告诉了设置时区的方法,而并不是真的去修改/etc/sysconfig/clock这个文件。换句话说就是tzselect命令仅仅告诉我们通过设置TZ这个环境变量来选择的时区,然后将变量添加到.profile文件中。下面就简单介绍一下如何使用tzselect命令设置时区,以及如何通过修改/etc/sysconfig/clock配置文件来设置时区。 tzselect: 执行tzselect命令-->选择Asia-->选择China-->选择east China - Beijing, Guangdong, Shanghai, etc-->然后输入1。过程如下图: 执行完tzselect命令选择时区后,时区并没有更改,只是在命令最后提示你可以执行TZ='Asia/Shanghai'; export TZ 并将这行命令添加到.profile中,然后退出并重新登录。参考下图中date命令看到的结果,最终时区显示为CST,即中国标准时间。 修改配置文件来修改时区1、修改/etc/sysconfig/clock ZONE=Asia/Shanghai 2、rm /etc/localtime3、链接到上海时区文件 ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 执行完上述过程后,重启机器,即可看到时区已经更改。
‘肆’ linux怎么修改时间
一、手动修改
1. date命令:查看当前时间
修改成功!
‘伍’ linux使用c/c++怎么计算时间差
可以用time()系统调用来获取系统时间,然后减去之前记录的时间就得到了时间差
‘陆’ linux服务器的时间不准
两个可能,时区错误,不过我记得没有 40 分钟的市区差。
还一个可能就是时钟本来设置就不准,你去用 ntp 对一下时间就行了。
‘柒’ linux中的时间是哪个时区的
1、more /etc/sysconfig/clock
ZONE="Asia/Shanghai"
2、GMT + 8 = UTC + 8 = CST ,我们的linux系统时间和计算机硬件时间应该是cst时间,上海时区。
3、安装CentOS/RHEL时候,应当取消”系统时钟使用UTC时间”这个选项,如果忘了取消,系统时钟会差8小时
#vi /etc/sysconfig/clock
把UTC=true 修改为 UTC=false,保存后重启即可。
4、#ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
或者
#cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
5、系统时钟
date -R
6、zmp – This utility prints the current time and date in the specified time zone. Example:
# zmp Japan
Japan Tue Feb 28 17:52:18 2017 JST
# zmp Iceland
Iceland Tue Feb 28 08:52:45 2017 GMT
zmp China
China Tue Feb 28 08:53:02 2017 China
7、CST/GMT/UTC/DST缩写
CST China Standard Time UT+8:00
GMT 格林威治标准时间(Greenwich Mean Time,简称G.M.T.)
UTC 世界协调时间UTC比GMT来得更加精准
DST 夏日节约时间:所谓“夏日节约时间”Daylight Saving Time(简称D.S.T.),
RTC 硬件时钟(Real Time Clock,简称RTC),相对应的系统时钟(System Clock)。
‘捌’ 为什么linux上的时间不准
一、问题分析
1.转换误差
2.时钟不稳定
3.时钟频率不对
接下来来看一下Linux系统内时间管理的内容
clock source用于为linux内核提供一个时间基线,实际上就是一个时间相关的结构体,如果你用linux的date命令获取当前时间,内核会读取当前的clock source转换并返回合适的时间单位给用户空间。在硬件层,它通常实现为一个由固定时钟频率驱动的计数器(上面的
TimeBase),计数器只能单调地增加,直到溢出为止。系统启动时,内核通过硬件RTC获得当前时间,并设置到计数器内,在这以后,内核通过选定的时钟源更新实时时间信息(墙上
时间),而不再读取RTC的时间。
clock source可以有多个,系统启动时会检查所有clock source然后将精度最好的时钟源设为当前时钟源。每个时钟源的精度由驱动它的时钟频率决定,可以用如下命令查看clock source。更详细的可参考书籍《Linux就该这么学》。
‘玖’ linux如何比对两个时间差
#include <stdio.h>
#include <time.h>
int
main ()
{
struct tm tm, tm2;
char buf[255];
time_t t1, t2;
strptime ("Thu Feb 5 13:12:18 EST 2009", "%a %b %d %H:%M:%S EST %Y", &tm);
strptime ("Fri Feb 6 13:11:18 EST 2009", "%a %b %d %H:%M:%S EST %Y", &tm2);
t1 = mktime(&tm);
t2 = mktime(&tm2);
printf("TIME: %ld, %ld, %ld\n", t2, t1, t2-t1);
return 0;
}