date -s仅临时修改系统时间,重启失效;必须执行hwclock --systohc同步硬件时钟,并用timedatectl set-timezone正确设置时区,且关闭ntp服务后才能持久生效。

date 和 timedatectl 都能改系统时间,但直接用 date -s 只改内存里的系统时间,重启就丢;真要持久生效,必须同步硬件时钟 + 确认时区正确,否则你看到的“时间”可能只是显示错觉。
用 date -s 临时改时间,但别以为这就完了
它只动内核维护的系统时间,BIOS/UEFI 里的硬件时钟(RTC)完全不受影响。重启后系统从硬件钟读时间,立刻打回原形。
- 执行
date -s "2026-05-23 18:00:00"后,date命令显示新时间,但hwclock --show仍是你原来的硬件时间 - 必须紧跟着运行
hwclock --systohc,把刚设的系统时间写进硬件钟 - 如果系统配置为硬件钟存 UTC(
/etc/default/rcS或/etc/sysconfig/clock中UTC=true),hwclock --systohc会自动换算;设成本地时间则直写,多系统共存(如 Linux+Windows)时容易出问题
timedatectl set-time 更安全,但得先关 NTP
它本质是封装了 date + hwclock 的逻辑,还顺带检查 NTP 状态。但如果你开着 chronyd 或 ntpd,它会拒绝手动设置,报错:Failed to set time: Automatic time synchronization is enabled。
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
- 先停服务:
systemctl stop chronyd(或ntpd),再timedatectl set-ntp false - 然后执行:
timedatectl set-time "2026-05-23 18:00:00" - 改完可选重新开同步:
timedatectl set-ntp true,但注意:这会让时间立刻被 NTP 服务器拉回,适合校准小偏差,不适合大幅修改
时区不对,所有时间显示都是假的
系统内部始终以 UTC 存储时间,date 显示的“本地时间”全靠时区文件解释。很多人改完时间发现还是差 8 小时,其实是 /etc/localtime 指向错了。
- 验证当前时区:
timedatectl | grep "Time zone",或看date -R输出末尾是否为+0800 - 正确做法是让
/etc/localtime指向/usr/share/zoneinfo/Asia/Shanghai:ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime - 别用
tzselect或在 shell 里设TZ=Asia/Shanghai,那只是改当前终端环境,cron、rsyslog 等服务根本不认 - CentOS 7+/Ubuntu 18.04+ 推荐用
timedatectl set-timezone Asia/Shanghai,它底层也是改这个链接
大幅偏差或无 NTP 服务时,ntpdate 是最快补救手段
当系统时间比真实时间慢几小时甚至几天,NTP 守护进程(chronyd)默认会拒绝大步跳变,只做缓慢调整——等它自己校准可能要几十分钟。
- 先停守护进程:
systemctl stop chronyd - 用
ntpdate强制一次跳变:ntpdate -s ntp.aliyun.com(-s表示静默,不输出) - 它不依赖 systemd,老系统或容器里也能用;但注意:
ntpdate已被标记为废弃,仅作应急,长期请用chronyd的makestep配置
hwclock --show 和 date -u 是否一致、没人确认 /etc/localtime 是不是软链接、也没人想到 NTP 服务正在后台悄悄把你刚设的时间又推翻。这些点漏一个,时间就永远不准。










