date命令可查看和设置系统时间(需root),但仅影响软件时钟;同步硬件时钟需hwclock;推荐用timedatectl启用ntp自动校准,并确认时区设置。

Linux 中的 date 命令既能查看当前系统时间,也能手动设置时间(需 root 权限),但要注意它只影响系统软件时钟,不直接同步硬件时钟(RTC)——除非额外调用 hwclock。
查看当前系统时间
运行以下命令即可显示本地时区下的完整日期与时间:
-
date—— 默认格式,如Wed Apr 10 15:23:41 CST 2024 -
date +"%Y-%m-%d %H:%M:%S"—— 自定义格式,输出类似2024-04-10 15:23:41 -
date -u—— 显示协调世界时(UTC),不带时区转换
临时修改系统时间(需 root)
仅建议在测试、调试或无 NTP 服务的离线环境中使用。普通用户无法执行;必须用 sudo 或切换为 root:
-
sudo date -s "2024-04-10 15:30:00"—— 设置具体时间 -
sudo date -s "15:30:00"—— 只改时间,日期保持不变 -
sudo date -s "next day"—— 快进一天(支持自然语言表达)
⚠️ 注意:该操作仅更新内核维护的系统时间(software clock),重启后若未同步到硬件时钟,可能恢复旧值。
将系统时间写入硬件时钟
为防止重启后时间丢失,设好系统时间后应同步到主板 RTC:
-
sudo hwclock --systohc—— 把当前系统时间写入硬件时钟(推荐加--utc参数若 BIOS 设为 UTC 模式) -
sudo hwclock --show—— 查看硬件时钟当前值,用于比对是否同步成功
多数现代发行版默认启用 systemd-timesyncd 或 NTP 服务,会自动定期校准时间,手动设置前建议先停用:sudo systemctl stop systemd-timesyncd(或 chronyd/ntpd)。
快速校准时间(推荐方式)
比起手动设时间,更安全可靠的做法是用网络时间协议自动同步:
-
sudo timedatectl set-ntp true—— 启用系统级 NTP 自动同步(systemd 环境) -
sudo ntpdate -s time.windows.com—— 一次性强制同步(ntpdate已被弃用,仅作临时应急) -
timedatectl status—— 查看时区、NTP 状态、系统/硬件时钟是否一致
确认时区正确也很关键:sudo timedatectl set-timezone Asia/Shanghai。










