![当我设置之前的日期并重新启动时,日期更改为2016年2月11日和2014年1月1日](https://linux22.com/image/136171/%E5%BD%93%E6%88%91%E8%AE%BE%E7%BD%AE%E4%B9%8B%E5%89%8D%E7%9A%84%E6%97%A5%E6%9C%9F%E5%B9%B6%E9%87%8D%E6%96%B0%E5%90%AF%E5%8A%A8%E6%97%B6%EF%BC%8C%E6%97%A5%E6%9C%9F%E6%9B%B4%E6%94%B9%E4%B8%BA2016%E5%B9%B42%E6%9C%8811%E6%97%A5%E5%92%8C2014%E5%B9%B41%E6%9C%881%E6%97%A5.png)
我想将日期设置为“1990-??-??”在我的电脑上,但是当我重新启动它时,我看到:
在 Ubuntu 1604 上,系统日期为“2016 年 2 月 11 日”,但 RTC 为“1990-??-??”。
在 Ubuntu 1404 上,它们都是“1 Jan 2014”。
这是 Ubuntu 的 bug 吗?
我使用以下命令来执行此操作:
# timedatectl set-ntp no
(停止自动时间更新)# timedatectl set-time "1990-8-8 20:20:20"
(设置日期)# hwclock --systohc
(同步RTC)
我测试了一些日期,发现我无法在 Ubuntu 1604 上设置“2016 年 2 月 11 日”之前的日期,在 Ubuntu 1404 上无法设置“1998 年 1 月 1 日”之前的日期。
答案1
当使用systemd
它时,它会在启动时设置“合理”时间,即如果它返回的时间早于 systemd 本身的发布日期,则将时钟提前。这些值在两个中都设置时间同步和在里面。
这是设置的地方TIME_EPOCH。
答案2
在 UNIX 上,通常会出现没有工作实时时钟的后备方案:
然后内核使用来自根文件系统超级块的时间戳。
使用该date
命令,您当然可以设置至少从 1970 年 1 月 1 日到 2038 年范围内的任何时间