Ubuntu零基础教学-Ubuntu硬件时间与系统时间竟然不一致,一段代码教你重新做人!
Posted bug菌√
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ubuntu零基础教学-Ubuntu硬件时间与系统时间竟然不一致,一段代码教你重新做人!相关的知识,希望对你有一定的参考价值。
环境:Ubuntu20.04
前言:
跑项目偶然在执行新增sql,凡是涉及时间字段,写入时间都与北京时间差8时,就很离谱。可明明Ubuntu系统显示时间跟Windows时间一致啊。接下来,我进行了一段神代码测试!
写段main函数获取时间试试,果然不出我所料;运行结果情况控制台。
好家伙,我这是有多拼命,凌晨两点还在奋斗码代码!这肯定是哪里出问题了,可我明明也记得当初安装完Ubuntu后也是重新设置了系统时间,这怎么办呢?查阅相关资料才知道,原来是这样:
出现这种情况的原因是 Windows 和 Ubuntu它们在默认情况下看待硬件时间(主板上的BOIS显示的时间)的方式不一样;
在Linux计算机上,拥有两个时间,一个是硬件时间(Bios中记录的时间,称为hwclock),另一个是操作系统时间(osclock);
你再联想下,java程序获取的时间都是GMT时间(格林尼治时间(0时区的时间)),而系统是北京时间,应该是GMT+8,刚好相差8小时,所以直接推断,Ubuntu硬件时间存在时区差;
我们先来查询下系统时钟和时间设置;直接使用如下指令
timedatectl
果然时区默认转回了美国时区,难怪!
在此,就有必要给科普下关于上方获取到的三时间概念:
- UTC,即Universal Time Coordinated, 协调世界时
- GMT,即Greenwich Mean Time, 格林尼治平时
- RTC时间,即Real-time clock,是电脑的硬件时间
Windows 与 Linux 缺省看待系统硬件时间的方式是不一样的:
Linux 时钟分为系统时钟(System Clock)和硬件(RTC)时钟。Linux把硬件时间当作 UTC,系统时间是UTC时间经过换算得来的。比如说北京时间是GMT+8,则系统中显示时间是硬件时间+8。
Windows把系统硬件(RTC)时间当作本地时间(local time),即系统时间跟BIOS中显示的时间(RTC)是一样的。
那知道原因就知道怎么解决了,只需要把时区改成国内的即可!
设置时区
timedatectl set-timezone "Asia/Shanghai"
来,检测一下,康康时区是否设置成功了:
时区已经设置成功了; 我们再运行下main 函数;
大功告成!new Date获取到的硬件时间 也与系统时间一致了;你学会了?
综上,就是本期干货教学啦,若是不够吃,bug菌再想想办法~
热文推荐:
... ...
若是想要了解更多Ubuntu相关文章,请关注bug菌的专栏《Ubuntu零基础教学》,bug菌会持续更新哒;手把手教你如何吃透Ubuntu!我用双手成就你的梦想。
如果觉得这篇文章对你有所帮助,还请不忘在文章的左下角,直接pia的一下点亮它 up up up!!!若是我,不用犹豫直接进我的收藏夹吃灰去吧!不管以后用不用的上,先吃上灰再说,哈哈哈哈哈嗝~~
❤如果文章对您有所帮助,就请在文章末尾的左下角把大拇指点亮吧!(#^.^#);
❤如果喜欢bug菌分享的文章,就请给bug菌点个关注吧!(๑′ᴗ‵๑)づ╭❤~;
❤对文章有任何问题欢迎小伙伴们下方留言或者入群探讨【群号:708072830】;
❤鉴于个人经验有限,所有观点及技术研点,如有异议,请直接回复参与讨论(请勿发表攻击言论,谢谢);
❤版权声明:本文为博主原创文章,转载请附上原文出处链接和本文声明,版权所有,盗版必究!(*^▽^*).
以上是关于Ubuntu零基础教学-Ubuntu硬件时间与系统时间竟然不一致,一段代码教你重新做人!的主要内容,如果未能解决你的问题,请参考以下文章
Ubuntu零基础教学-Ubuntu20.04默认以root权限登录 | 超级详细,建议收藏
Ubuntu零基础教学-Ubuntu20.04系统所在分区sda5进行磁盘扩容|详细教程,建议收藏
Ubuntu零基础教学-Ubuntu20.04安装Rosbridge并进行小乌龟测试 | 超级干货,建议收藏
Ubuntu零基础教学-Ubuntu20.04安装maven及配置本地仓库 | 超级详细,强烈建议收藏!
Ubuntu零基础教学-Ubuntu20.04终端无颜色怎么办?在线等挺急的!
Ubuntu零基础教学-Ubuntu20.04安装Git及使用,并上传代码至gitlab服务器 | 超级详细,建议收藏!