封面
王先生 王先生

wangxiansheng.com

王先生V

Debian 12 英文版安装后更改中国时区和系统时间的方法

Debian 12 英文版安装完成后,系统语言可以继续保持英文,只需要将服务器时区修改为中国标准时间即可。

中国大陆统一使用 UTC+8 时区,在 Linux 系统中对应的标准时区名称为:

Asia/Shanghai

本文介绍如何在 Debian 12 中设置中国时区、启用网络自动校时、检查时间同步状态,以及处理常见的时间不准确问题。

一、查看当前系统时间和时区

首先执行以下命令:

timedatectl

可能会看到类似结果:

               Local time: Sat 2026-07-25 10:30:00 UTC
           Universal time: Sat 2026-07-25 10:30:00 UTC
                 RTC time: Sat 2026-07-25 10:30:00
                Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: no
              NTP service: inactive
          RTC in local TZ: no

其中:

  • Local time:系统当前显示的本地时间;
  • Universal time:UTC 世界协调时间;
  • RTC time:服务器硬件时钟时间;
  • Time zone:当前系统时区;
  • System clock synchronized:系统时间是否已完成网络同步;
  • NTP service:网络自动校时服务是否启用;
  • RTC in local TZ:硬件时钟是否使用本地时间。

如果 Time zone 显示为 Etc/UTC,说明当前系统使用的是 UTC 时区。

二、查看系统支持的中国时区

可以使用以下命令搜索与上海相关的时区:

timedatectl list-timezones | grep Shanghai

正常情况下会显示:

Asia/Shanghai

也可以查看亚洲地区的全部时区:

timedatectl list-timezones | grep Asia

三、将 Debian 12 时区设置为中国时区

执行以下命令:

sudo timedatectl set-timezone Asia/Shanghai

如果当前登录的是 root 用户,也可以直接执行:

timedatectl set-timezone Asia/Shanghai

timedatectl set-timezone 会将系统时区设置为指定的时区名称。Debian 12 的 timedatectl 支持从系统时区列表中选择并设置时区。

设置完成后,执行:

timedatectl

正常情况下应显示:

               Local time: Sat 2026-07-25 18:30:00 CST
           Universal time: Sat 2026-07-25 10:30:00 UTC
                 RTC time: Sat 2026-07-25 10:30:00
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

重点确认以下内容:

Time zone: Asia/Shanghai (CST, +0800)

其中:

  • CST:这里表示中国标准时间;
  • +0800:表示 UTC+8;
  • Asia/Shanghai:Linux 系统中中国大陆常用的标准时区名称。

四、启用网络自动校时

设置时区只是改变系统时间的显示方式。如果服务器本身的时间存在误差,还需要启用 NTP 网络自动校时。

执行:

sudo timedatectl set-ntp true

然后查看状态:

timedatectl

正常情况下应显示:

System clock synchronized: yes
NTP service: active

Debian 12 默认使用 systemd-timesyncd 作为 NTP 时间同步客户端,可以通过 timedatectl set-ntp true 启用网络时间同步。

五、安装并启动 systemd-timesyncd

如果执行 timedatectl set-ntp true 后,NTP 服务仍然没有启用,可以检查 systemd-timesyncd 是否已安装。

执行:

sudo apt update
sudo apt install systemd-timesyncd -y

安装完成后,启用并立即启动服务:

sudo systemctl enable --now systemd-timesyncd

重新启动时间同步服务:

sudo systemctl restart systemd-timesyncd

再次开启 NTP:

sudo timedatectl set-ntp true

查看服务状态:

systemctl status systemd-timesyncd

正常情况下可以看到:

Active: active (running)

如果只需要简要检查服务是否正在运行,可以执行:

systemctl is-active systemd-timesyncd

返回:

active

表示服务运行正常。

六、检查系统是否完成时间同步

执行:

timedatectl

重点查看:

System clock synchronized: yes
NTP service: active

还可以执行:

timedatectl timesync-status

该命令可以显示当前使用的时间服务器、同步间隔和时间偏差等信息。

示例:

       Server: 203.107.6.88
Poll interval: 34min 8s
         Leap: normal
      Version: 4
      Stratum: 2
    Reference: GPS
    Precision: 1us
Root distance: 25.123ms
       Offset: +1.234ms
        Delay: 35.678ms
       Jitter: 2.345ms
 Packet count: 12
    Frequency: +3.456ppm

也可以使用以下命令查看更加详细的同步信息:

timedatectl show-timesync

查看时间同步服务日志:

journalctl -u systemd-timesyncd

查看最近的服务日志:

journalctl -u systemd-timesyncd --no-pager -n 30

七、检查当前系统时间

执行:

date

正常情况下会看到类似结果:

Sat Jul 25 18:30:00 CST 2026

也可以使用指定格式显示时间:

date "+%Y-%m-%d %H:%M:%S %Z"

输出示例:

2026-07-25 18:30:00 CST

查看 UTC 时间:

date -u

输出示例:

Sat Jul 25 10:30:00 UTC 2026

中国标准时间应比 UTC 时间快 8 个小时。

八、检查时区文件链接

Linux 系统通常通过 /etc/localtime 文件确定当前时区。

执行:

ls -l /etc/localtime

正确设置为中国时区后,通常会显示:

/etc/localtime -> /usr/share/zoneinfo/Asia/Shanghai

也可以执行:

readlink -f /etc/localtime

正常结果为:

/usr/share/zoneinfo/Asia/Shanghai

九、手动设置系统时间

正常情况下,建议使用 NTP 自动同步时间,不建议长期手动修改。

如果服务器暂时无法连接网络,或者需要临时校正时间,可以先关闭 NTP:

sudo timedatectl set-ntp false

然后手动设置时间:

sudo timedatectl set-time "2026-07-25 18:30:00"

检查时间:

date

手动设置完成后,建议重新启用 NTP:

sudo timedatectl set-ntp true

需要注意,启用 NTP 后,系统时间可能会再次根据网络时间服务器进行校正。

十、设置硬件时钟为 UTC

Linux 服务器通常建议让硬件时钟使用 UTC,而系统根据设置的时区显示本地时间。

执行:

sudo timedatectl set-local-rtc 0

然后查看:

timedatectl

应显示:

RTC in local TZ: no

这表示服务器硬件时钟使用 UTC,系统本地时间则根据 Asia/Shanghai 时区转换为中国标准时间。

不建议将 Linux 服务器的硬件时钟设置为本地时间,因为在时区切换、夏令时处理或多系统环境中可能产生时间异常。

十一、将系统时间写入硬件时钟

如果已经确认系统时间正确,可以将当前系统时间写入硬件时钟:

sudo hwclock --systohc

查看硬件时钟:

sudo hwclock --show

一般情况下,云服务器和虚拟服务器不需要频繁执行这一步,因为硬件时钟通常由虚拟化平台管理。

十二、配置自定义 NTP 时间服务器

Debian 12 的 systemd-timesyncd 配置文件为:

/etc/systemd/timesyncd.conf

编辑配置文件:

sudo nano /etc/systemd/timesyncd.conf

可以修改为:

[Time]
NTP=ntp.aliyun.com ntp.tencent.com cn.pool.ntp.org
FallbackNTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org

保存文件后,重新启动时间同步服务:

sudo systemctl restart systemd-timesyncd

重新开启 NTP:

sudo timedatectl set-ntp true

检查同步状态:

timedatectl timesync-status

查看服务日志:

journalctl -u systemd-timesyncd --no-pager -n 30

一般情况下,使用 Debian 默认提供的时间服务器即可,不必单独修改 NTP 配置。只有在默认服务器连接不稳定或网络环境受限时,才需要设置其他时间服务器。

十三、使用 dpkg-reconfigure 设置时区

除了 timedatectl,Debian 还可以使用传统的时区配置工具。

执行:

sudo dpkg-reconfigure tzdata

在弹出的界面中依次选择:

Geographic area: Asia
Time zone: Shanghai

设置完成后,系统会显示类似信息:

Current default time zone: 'Asia/Shanghai'
Local time is now:      Sat Jul 25 18:30:00 CST 2026.
Universal Time is now:  Sat Jul 25 10:30:00 UTC 2026.

如果服务器没有图形界面,也可以在终端中使用方向键和回车键完成选择。

十四、root 用户可直接执行的完整命令

如果当前已经使用 root 用户登录,可以依次执行:

apt update
apt install systemd-timesyncd -y

timedatectl set-timezone Asia/Shanghai
timedatectl set-local-rtc 0
systemctl enable --now systemd-timesyncd
timedatectl set-ntp true
systemctl restart systemd-timesyncd

timedatectl
date
timedatectl timesync-status

十五、普通 sudo 用户可直接执行的完整命令

如果当前使用普通用户登录,并且该用户拥有 sudo 权限,可以执行:

sudo apt update
sudo apt install systemd-timesyncd -y

sudo timedatectl set-timezone Asia/Shanghai
sudo timedatectl set-local-rtc 0
sudo systemctl enable --now systemd-timesyncd
sudo timedatectl set-ntp true
sudo systemctl restart systemd-timesyncd

timedatectl
date
timedatectl timesync-status

十六、最简单的设置方法

如果系统已经安装并运行 systemd-timesyncd,通常只需要执行以下命令:

sudo timedatectl set-timezone Asia/Shanghai
sudo timedatectl set-local-rtc 0
sudo timedatectl set-ntp true
timedatectl

看到以下内容就表示设置成功:

Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no

十七、常见问题处理

1. 提示 sudo: command not found

部分最小化安装的 Debian 系统没有安装 sudo

可以先切换到 root 用户:

su -

输入 root 密码后安装 sudo

apt update
apt install sudo -y

将普通用户加入 sudo 用户组:

usermod -aG sudo 用户名

例如:

usermod -aG sudo wang

用户需要退出并重新登录,新的用户组权限才会生效。

如果已经使用 root 用户登录,也可以直接去掉命令前面的 sudo

2. 提示 Failed to set time zone

先检查时区名称是否存在:

timedatectl list-timezones | grep Shanghai

如果没有结果,可以重新安装时区数据:

sudo apt update
sudo apt install --reinstall tzdata -y

然后再次设置:

sudo timedatectl set-timezone Asia/Shanghai

3. NTP service 显示 inactive

执行:

sudo apt install systemd-timesyncd -y
sudo systemctl enable --now systemd-timesyncd
sudo timedatectl set-ntp true

再次检查:

timedatectl

4. System clock synchronized 一直显示 no

先检查服务状态:

systemctl status systemd-timesyncd

然后查看同步日志:

journalctl -u systemd-timesyncd --no-pager -n 50

重新启动服务:

sudo systemctl restart systemd-timesyncd

检查网络是否正常:

ping -c 4 deb.debian.org

检查 DNS 解析:

getent hosts deb.debian.org

检查 UDP 123 端口是否受到服务器防火墙、云平台安全组或上游网络限制。

刚启动服务时,系统也可能需要等待一段时间才能显示:

System clock synchronized: yes

5. 时间相差正好 8 个小时

如果服务器时间与中国时间相差正好 8 个小时,通常说明系统仍在使用 UTC 时区。

执行:

sudo timedatectl set-timezone Asia/Shanghai

然后查看:

timedatectl
date

6. 重启后时区恢复为 UTC

检查 /etc/localtime

ls -l /etc/localtime

正常情况下应指向:

/usr/share/zoneinfo/Asia/Shanghai

可以重新执行:

sudo timedatectl set-timezone Asia/Shanghai

也可以使用:

sudo dpkg-reconfigure tzdata

如果是 Docker 容器、LXC 容器或某些云服务器模板,还需要检查宿主机、初始化脚本或云平台配置是否在启动时覆盖系统时区。

7. PHP 或网站显示的时间仍然不正确

服务器系统时区正确,并不代表 PHP、数据库或网站程序一定会自动使用相同的时区。

查看 PHP 当前时区:

php -i | grep "Default timezone"

查找 PHP 配置文件:

php --ini

编辑对应的 php.ini

sudo nano /etc/php/8.2/fpm/php.ini

找到:

;date.timezone =

修改为:

date.timezone = Asia/Shanghai

如果使用 PHP-FPM,重启服务:

sudo systemctl restart php8.2-fpm

如果使用 Apache,还可以重启 Apache:

sudo systemctl restart apache2

如果使用 Nginx:

sudo systemctl restart nginx

WordPress 网站还需要进入后台:

设置 → 常规 → 时区

选择:

上海

或者:

UTC+8

推荐优先选择“上海”,因为它使用标准时区名称,而不仅是固定的 UTC 偏移量。

8. MySQL 或 MariaDB 时间不正确

进入数据库:

sudo mysql

查看数据库时间和时区:

SELECT NOW();
SELECT @@global.time_zone;
SELECT @@session.time_zone;

如果返回:

SYSTEM

表示数据库通常跟随服务器系统时区。

修改系统时区后,可以重启数据库服务:

sudo systemctl restart mariadb

或者:

sudo systemctl restart mysql

再次检查:

SELECT NOW();

十八、最终检查清单

完成设置后,建议依次执行:

timedatectl
date
readlink -f /etc/localtime
systemctl is-active systemd-timesyncd
timedatectl timesync-status

正确结果应满足:

Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no

同时:

readlink -f /etc/localtime

应返回:

/usr/share/zoneinfo/Asia/Shanghai

总结

Debian 12 英文版不需要更改系统语言,只需要将时区设置为 Asia/Shanghai,即可使用中国标准时间。

最核心的命令如下:

sudo timedatectl set-timezone Asia/Shanghai
sudo timedatectl set-local-rtc 0
sudo timedatectl set-ntp true
timedatectl

如果系统没有安装时间同步服务,可以执行:

sudo apt update
sudo apt install systemd-timesyncd -y
sudo systemctl enable --now systemd-timesyncd
sudo timedatectl set-ntp true

设置完成后,Debian 的菜单、终端和系统语言仍然保持英文,但系统时间、日志时间以及大部分跟随系统时区的应用程序会按照中国标准时间显示。

中国 · 江苏 · 苏州
浏览 2670