sudo hwclock --show 能直接读取BIOS硬件时钟原始时间,而 date 显示的是独立运行的系统时钟;硬件时钟无时区概念,其显示值取决于 /etc/adjtime 中的 UTC 或 LOCAL 设置。

直接用 sudo hwclock --show 就能看到 BIOS 里存的硬件时钟时间,不需要进 BIOS 界面。
为什么不能只用 date 查看 BIOS 时间
因为 date 显示的是系统时钟(内核维护的软件时钟),它开机时从硬件时钟读一次,之后就完全独立运行。哪怕你刚改过 BIOS 时间,date 也不会变——除非你手动同步。
-
date和date -u都不反映硬件时钟真实值 - 某些发行版里
timedatectl的RTC time:行看起来像 BIOS 时间,但它可能已按 UTC/local 设置做过换算,不是原始值 - 真正“裸露”的 BIOS 时间,只有
hwclock --show或cat /proc/driver/rtc能给出(后者需 root 权限且输出较杂)
hwclock --show 输出结果怎么看
执行后典型输出类似:
2026-10-03 00:04:12.123456+0800
这个时间是否就是 BIOS 里看到的?不一定——取决于系统是否启用 UTC 模式:
- 如果
/etc/adjtime里第一行是UTC,那这个时间是硬件时钟按 UTC 存储、再转成本地时区显示的结果 - 如果第一行是
LOCAL,那它基本等于你在 BIOS 里看到的本地时间(比如北京时间) - 加
--localtime参数可强制按本地时间解释硬件时钟,绕过配置文件设置:sudo hwclock --show --localtime
没有 hwclock 怎么办
极少数精简系统(如某些容器或嵌入式镜像)可能没装 hwclock,这时可尝试:
-
sudo cat /proc/driver/rtc:输出包含rtc_time字段,格式为hh:mm:ss,但不含日期,且依赖内核编译选项(CONFIG_RTC_PROC_FS) -
sudo dmesg | grep -i "rtc\|clock":只能看到启动时读取的硬件时间快照,无法反映当前值 - 别用
clock --show:它在多数现代发行版中只是hwclock的符号链接,行为一致;但部分旧系统或非 x86 架构可能不可靠
最关键的细节是:硬件时钟本身不存时区信息,它只是一个计数器。你看到的时间是系统根据 /etc/adjtime 的声明方式“翻译”出来的——这点常被忽略,却直接决定你看到的数字到底对应 BIOS 里的哪个刻度。


















