关于linux的系统时间

    一句话总结:/etc/localtime 决定了你的时区,如果没有这个文件,系统将设置成utc(0时区)的时间。

    这些配置文件在/usr/shara/zoneinfo中,for example 北京时间  /usr/share/zoneinfo/Asia/Shanghai,将这个文件拷贝到/etc/localtime就可以正确设置自己的时区了。

   第二点,就是时间戳,time和gettimeofday都是获取的utc时间。想要本地时间,使用localtime函数转化。date命令查看的是时间,人家是有标识的(UTC还是CST)。

不要小看时间这个东东,将来你和网络或者音视频打交道的时候,时间很重要。

       在嵌入式时间里,如果时区转变后,很麻烦。可以使用export TZ=CST-08:00来修改local time,使用time 和gettimeofday时还是正常的utc时间。

 --------------------------------------------------------------------------废话----------------------------------------------------------------------------------------

    我装了一个ubuntu后,发现时间不对,怎么设置都不对。使用date看了一下

# date
Mon Jun 24 23:08:37 EDT 2019,我现在的北京时间是11:09,EDT -04:00 是东部夏时制,对应的是纽约时间。那么我们怎么把时区搞对呢?

    不要急,先玩一下命令tzselect

xx@ubuntu:etc$ tzselect 
Please identify a location so that time zone rules can be set correctly.
Please select a continent, ocean, "coord", or "TZ".
 1) Africa
 2) Americas
 3) Antarctica
 4) Asia
 5) Atlantic Ocean
 6) Australia
 7) Europe
 8) Indian Ocean
 9) Pacific Ocean
10) coord - I want to use geographical coordinates.
11) TZ - I want to specify the time zone using the Posix TZ format.
#?  4

选择4(亚洲)

Please select a country whose clocks agree with yours.
 1) Afghanistan          18) Israel            35) Palestine
 2) Armenia          19) Japan            36) Philippines
 3) Azerbaijan          20) Jordan            37) Qatar
 4) Bahrain          21) Kazakhstan        38) Russia
 5) Bangladesh          22) Korea (North)        39) Saudi Arabia
 6) Bhutan          23) Korea (South)        40) Singapore
 7) Brunei          24) Kuwait            41) Sri Lanka
 8) Cambodia          25) Kyrgyzstan        42) Syria
 9) China          26) Laos            43) Taiwan
10) Cyprus          27) Lebanon            44) Tajikistan
11) East Timor          28) Macau            45) Thailand
12) Georgia          29) Malaysia            46) Turkmenistan
13) Hong Kong          30) Mongolia            47) United Arab Emirates
14) India          31) Myanmar (Burma)        48) Uzbekistan
15) Indonesia          32) Nepal            49) Vietnam
16) Iran          33) Oman            50) Yemen
17) Iraq          34) Pakistan
#? 9

现在9 (中国)

Please select one of the following time zone regions.
1) Beijing Time
2) Xinjiang Time

#? 1
选择 1 北京时间

The following information has been given:

    China
    Beijing Time

Therefore TZ='Asia/Shanghai' will be used.
Local time is now:    Tue Jun 25 11:15:26 CST 2019.
Universal Time is now:    Tue Jun 25 03:15:26 UTC 2019.
Is the above information OK?
1) Yes
2) No
#? Yes
上面的信息是不是你想要的啊,我们一看,11:16对上了,CST东八区对上了,所以输入yes。那么就ok了

xx@ubuntu:etc$ date
Mon Jun 24 23:17:49 EDT 2019

发现date一下还是不对。上面只是给你看了一下告诉你去把Asia/Shanghai这里的配置文件搞到/etc/localtime ,这样就起作用了

sudo cp  /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime 

yp@ubuntu:etc$ date
Tue Jun 25 11:22:17 CST 2019
再次查看时间的时候就变成北京时间了。

xx@ubuntu:etc$ sudo mv localtime  looooocaltime
xx@ubuntu:etc$ date
Tue Jun 25 03:30:08 UTC 2019

这个一搞就变成了utc(0时区)的时间了
 

[root@Ingenic-uc1_1:test]# ./mips-getutc 
time:28
1/1/1970
0:0:28
gettimeofday tzone.tz_minuteswest:0
gettimeofday tzone.tz_dsttime:0
gettimeofday ret=0
gettimeofday scond= 28 
gettimeofday uscond= 608883 
[root@Ingenic-uc1_1:test]# export TZ=CST-08:00
[root@Ingenic-uc1_1:test]# date
Thu Jan  1 08:02:30 CST 1970
[root@Ingenic-uc1_1:test]# ./mips-getutc 
time:167
1/1/1970
8:2:47     //说明local time变了
gettimeofday tzone.tz_minuteswest:0
gettimeofday tzone.tz_dsttime:0
gettimeofday ret=0
gettimeofday scond= 167    //说明utc没变
gettimeofday uscond= 278584

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

猜你喜欢

转载自blog.csdn.net/qq_16810885/article/details/93602139