使用正确的时区对于许多与系统相关的任务和流程至关重要。例如,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 快速设置菜单

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

Ubuntu 系统设置页面

如果启用了“自动时区”并且位置服务可用,Ubuntu 可以根据你的位置设置时区。若要手动设置,请关闭自动时区选项,选择“时区”,搜索你的城市,然后选择匹配的结果。

完成后关闭窗口。

故障排除

时区名称无效
运行 timedatectl list-timezones 并完全按照显示的方式复制时区名称。时区名称区分大小写。

自动时区在 GUI 中不更新
确保位置服务已启用并且系统具有互联网连接。你仍然可以使用 timedatectl 手动设置时区。

时钟正确但日志使用不同的时区
更改时区后重启受影响的 服务。长时间运行的服务可能保持旧时区,直到它们被重启为止。