问题描述:
Windows宿主上安装的虚拟机Ubuntu14.0.4时间是总是和宿主机时间相差16小时,这样总是会使某些程序由于时间问题报错。
一:关于Ubuntu虚拟机上的系统时间和宿主机上时间相差16小时:
1.GMT
格林威治标准时间GMT
2.UTC
UTC指的是Coordinated Universal Time- 世界协调时间(又称世界标准时间、世界统一时间)
所以基本上UTC的本质强调的是比GMT更为精确的世界时间标准,不过对于现行表款来说,GMT与UTC的功能与精确度是没有差别的。
3.PDT
PDT 是 Pacific Daylight Time 的缩写
美国夏季始于每年4月的第1个周日,
止于每年10月的最后一个周日。
夏令时比正常时间早一小时,
与PDT时间相对应的是PST , Pacific Standard Time 。 夏时制结束后就是PST
PDT与北京时间时差为-15小时
4.PST
PST
PST是太平洋标准时间(西八区),与北京时间(东八区)时差-16个小时,
也就是北京时间减去16就是PST时间。而PDT比PST早1个小时,就是说PDT与北京时间时差为-15小时
美国横跨西五区至西十区,共六个时区。每个时区对应一个标准时间,从东向西分别为东部时间(EST)(西五区时间)、中部时间(CST)(西六区时间)、山地时间(MST)(西七区时间)、太平洋时间(西部时间)(PST)(西八区时间)、阿拉斯加时间(AKST)(西九区时间)和夏威夷时间(HST)(西十区时间),按照“东早西晚”的规律,各递减一小时。
美国标准时间
与北京时间时差(小时)
HST |
-18 |
AKST |
-17 |
PST |
-16 |
MST |
-15 |
CST |
-14 |
EST |
-13 |
夏季始于每年4月的第1个周日,止于每年10月的最后一个周日。也称为DST: Daylight Saving Time 。
目前存在的时区有:
GMT 格林威治标准时间 GMT
UTC 全球标准时间 GMT
ECT 欧洲中部时间 GMT+1:00
EET 东欧时间 GMT+2:00
ART (阿拉伯)埃及标准时间 GMT+2:00
EAT 东非时间 GMT+3:00
MET 中东时间 GMT+3:30
NET 近东时间 GMT+4:00
PLT 巴基斯坦拉合尔时间 GMT+5:00
IST 印度标准时间 GMT+5:30
BST 孟加拉国标准时间 GMT+6:00
VST 越南标准时间 GMT+7:00
CTT 中国台湾时间 GMT+8:00
JST 日本标准时间 GMT+9:00
ACT 澳大利亚中部时间 GMT+9:30
AET 澳大利亚东部时间 GMT+10:00
SST 所罗门标准时间 GMT+11:00
NST 新西兰标准时间 GMT+12:00
MIT 中途岛时间 GMT-11:00
HST 夏威夷标准时间 GMT-10:00
AST 阿拉斯加标准时间 GMT-9:00
PST 太平洋标准时间 GMT-8:00
PNT 菲尼克斯标准时间 GMT-7:00
MST 西部山脉标准时间 GMT-7:00
CST 中部标准时间 GMT-6:00
EST 东部标准时间 GMT-5:00
IET 印第安那东部标准时间 GMT-5:00
PRT 波多黎各和美属维尔京群岛时间 GMT-4:00
CNT 加拿大纽芬兰时间 GMT-3:30
AGT 阿根廷标准时间 GMT-3:00
BET 巴西东部时间 GMT-3:00
CAT 中非时间 GMT-1:00
在Ubuntu上查看时间:
$date
Fri Nov 13 15:54:05 PST 2015
问题就是PST
只要改变这个时区成为CST(我们的当地时区)就行
二:修改时区:
方法一:
$tzselect
之后是交互式的选择配置,只需选择Asia->China就行。此时会把时区设置成东八区(对我们来说就是所谓的localtime)
这时会被提醒永久设置时区,也就是在~/.profile下添加TZ 环境变量
$vim ~/.profile
在最后添加以下这行
TZ=’Asia/Shanghai’ ; export TZ
之后再重启就能永久显示这个时区的时间。
显示系统时间的信息。
$date
方法二:
sudo tzconfig #如果命令不存在请使用:dpkg-reconfigure tzdata
然后按照提示选择 Asia对应的序号,选完后会显示一堆新的提示—输入城市名,如Shanghai或Chongqing,最后再用 sudo date -s “” 来修改本地时间。
按照提示进行选择时区,然后:
sudo cp /usr/share/zoneinfo/Asia/Chongqing /etc/localtime
三:问题:使用tzselect报错:(引用别人)
本人使用Ubuntu14.04 X64 server当时在配置时间同步服务器(ntp)突然发现时间居然
是PDT(Pacific Daylight Time)太平洋夏季时间,这个肯定是不行,所以
就想使用tzselect更改时区。
使用命令,报错如下:
$ tzselect
/usr/bin/tzselect: line 171:/home/ubuntu/iso3166.tab: No such file or directory
/usr/bin/tzselect: time zone files are not set up correctly
导致这个错误其实tzselect文件中有错误引起的
解决办法:
vim /usr/bin/tzselect
将
${TZDIR=pwd}
改为
${TZDIR=/usr/share/zoneinfo}
即可,其实这个是ubuntu14.04的一个bug,具体大家可以从官方的Ubuntu Bugs 上可以看到开源的盆友们提交的bugs.
扩展阅读:
一:虚拟机Ubuntu当启动的时间来源:
虚拟机Ubuntu启动之后时间是从虚拟机的BIOS时间读取的,而虚拟机BIOS的时间是从VMware读取的,也就是宿主机Windows的时间读取的。虚拟机BIOS的时间格式是UTC格式的,跟我们当地时间习惯慢8小时。但是这并不影响时间的正误,所谓的快慢,其实只是显示习惯上的不同,其实它们代表的是一个时间,转换一下时区(可以理解为转换一下格式就行)而已。
二:虚拟机 VMware上进入虚拟机Ubuntu的bios:
三:网上同步时间
1.安装ntpdate工具
# sudo apt-get install ntpdate
2.设置系统时间与网络时间同步
# ntpdate cn.pool.ntp.org
3.将系统时间写入硬件时间
# hwclock -w
这里公布2个NTP服务器地址:
cn.pool.ntp.org
ntp.api.bz
ntp.ubuntu.com
Ubuntu linaro(Lubuntu)修改系统时区(Cubieboard CC-A80修改系:http://www.linuxdiyf.com/linux/15532.html
Ubuntu中跟踪多个时区的简捷方法:http://www.linuxdiyf.com/linux/8243.html
Unix and Linux修改时区方法:http://www.linuxdiyf.com/linux/4108.html
【香蕉派Fedora系统设置】七、Fedora时区设置:http://www.linuxdiyf.com/linux/13303.html