Ubuntu零基础教学-Ubuntu硬件时间与系统时间竟然不

「这是我参与11月更文挑战的第8天,活动详情查看:2021最后一次更文挑战

 嗨,家人们,我是bug菌,我又来啦。今天我们来聊点什么咧,OK,接着为大家更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菌再想想办法~

三、热文推荐

  1. 如何在win10上安装Ubuntu20.04
  2. 如何在Ubuntu20.04上安装IDEA 及idea踩坑指南
  3. 如何在Ubuntu20.04上安装maven 及环境变量配置

... ...

​若是想要了解更多Ubuntu相关文章,请关注bug菌的专栏《Ubuntu零基础教学》,bug菌会持续更新哒;手把手教你如何吃透Ubuntu!我用双手成就你的梦想。​

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

如果觉得这篇文章对你有所帮助,还请不忘在文章的左下角,直接pia的一下点亮它 up up up!!!若是我,不用犹豫直接进我的收藏夹吃灰去吧!不管以后用不用的上,先吃上灰再说,哈哈哈哈哈嗝~~

----------------------------------------------------------------------------------------------​

❤如果文章对您有所帮助,就请在文章末尾的左下角把大拇指点亮吧!(#^.^#);

❤如果喜欢bug菌分享的文章,就请给bug菌点个关注吧!(๑′ᴗ‵๑)づ╭❤~;

❤对文章有任何问题欢迎小伙伴们下方留言或者入群探讨【群号:708072830】;

❤鉴于个人经验有限,所有观点及技术研点,如有异议,请直接回复参与讨论(请勿发表攻击言论,谢谢);

❤版权声明:本文为博主原创文章,转载请附上原文出处链接和本文声明,版权所有,盗版必究!(*^▽^*).