使用正确的时区对于许多与系统相关的任务和流程至关重要。例如,cron 守护进程使用系统的时区来执行 cron 任务,日志文件中的时间戳也基于同一个系统时区。
在 Ubuntu 上,时区是在安装过程中设置的,但可以随时更改。本指南介绍如何在服务器上使用 timedatectl 命令以及桌面系统上的日期与时间设置来更改时区。这些步骤适用于当前受支持的 Ubuntu 版本,包括 Ubuntu 24.04 和 Ubuntu 26.04。
前提条件
只有 root 用户或具有 sudo 权限的用户才能设置或更改系统的时区。
检查当前时区
timedatectl 是一个命令行实用程序,允许你查看和更改系统的时间和日期。它适用于所有基于 systemd 的现代 Linux 系统,包括 Ubuntu。有关这些步骤的与发行版无关的版本,请参阅如何在 Linux 中设置或更改时区。
要打印当前系统时区,请在不带任何参数的情况下调用 timedatectl:
timedatectl以下输出显示系统的时区设置为“UTC”:
输出 本地时间: 周一 2026-04-27 08:33:20 UTC
世界时间: 周一 2026-04-27 08:33:20 UTC
RTC 时间: 周一 2026-04-27 08:33:22
时区: UTC (UTC, +0000)
系统时钟已同步: 是
NTP 服务: 活动
RTC 在本地时区: 否 系统时区是通过将 /etc/localtime 符号链接到 /usr/share/zoneinfo 目录中的二进制时区标识符来配置的。
查看当前系统时区的另一种方法是找到符号链接指向的文件:
终端ls -l /etc/localtime输出lrwxrwxrwx 1 root root 27 Dec 10 12:59 /etc/localtime -> /usr/share/zoneinfo/Etc/UTC最终路径组件 Etc/UTC 就是当前活动的时区。
使用 timedatectl 命令更改时区
在更改时区之前,你需要找出要使用的时区的长名称。时区使用“地区/城市”格式。
要列出所有可用时区,你可以列出 /usr/share/zoneinfo 目录中的文件,或者使用 list-timezones 选项调用 timedatectl 命令:
timedatectl list-timezones输出...
America/Montevideo
America/Nassau
America/New_York
America/Nipigon
America/Nome
America/Noronha
...一旦确定哪个时区符合你的位置,请以 sudo 用户身份运行以下命令:
终端sudo timedatectl set-timezone your_time_zone例如,要将系统时区更改为 America/New_York:
sudo timedatectl set-timezone America/New_York调用 timedatectl 命令以验证更改:
timedatectl输出 本地时间: 周一 2026-04-27 04:41:42 EDT
世界时间: 周一 2026-04-27 08:41:42 UTC
RTC 时间: 周一 2026-04-27 08:41:48
时区: America/New_York (EDT, -0400)
系统时钟已同步: 是
NTP 服务: 活动
RTC 在本地时区: 否 更改立即生效,并在重启后保持不变。
使用 GUI 更改时区
如果你运行的是 Ubuntu 桌面版,可以通过 GUI 更改当前系统的时区。
打开右上角的系统菜单,然后点击设置图标:

在设置窗口中,从侧边栏选择“系统”,然后打开“日期与时间”:

如果启用了“自动时区”并且位置服务可用,Ubuntu 可以根据你的位置设置时区。若要手动设置,请关闭自动时区选项,选择“时区”,搜索你的城市,然后选择匹配的结果。
完成后关闭窗口。
故障排除
时区名称无效
运行 timedatectl list-timezones 并完全按照显示的方式复制时区名称。时区名称区分大小写。
自动时区在 GUI 中不更新
确保位置服务已启用并且系统具有互联网连接。你仍然可以使用 timedatectl 手动设置时区。
时钟正确但日志使用不同的时区
更改时区后重启受影响的 服务。长时间运行的服务可能保持旧时区,直到它们被重启为止。