How to Set or Change the Time Zone in Linux

By 

Updated on

6 min read

Globe illustration representing Linux time zone settings

When log entries or scheduled jobs show the wrong local hour even though the clock itself is accurate, the system time zone is usually incorrect. Linux stores system time independently from the time zone, then applies the configured zone when displaying local time.

Using the correct time zone is essential for system tasks and processes. For example, the cron daemon uses the system time zone when executing cron jobs , and log entries use it when displaying timestamps.

Most modern Linux distributions use systemd, which provides the timedatectl utility. This guide explains how to check and change the time zone with timedatectl, use the interactive tzdata configuration on Debian and Ubuntu, and configure /etc/localtime on systems without systemd.

Quick Reference

For a printable quick reference, see the timedatectl cheatsheet .

TaskCommand
Show complete time statustimedatectl
Print the current time zone onlytimedatectl show --property=Timezone --value
List all time zonestimedatectl list-timezones
Set time zonesudo timedatectl set-timezone America/New_York
Reset to UTCsudo timedatectl set-timezone Etc/UTC
Enable NTP syncsudo timedatectl set-ntp true
Set without systemdsudo ln -sf /usr/share/zoneinfo/Region/City /etc/localtime

Changing the time zone changes how local time is displayed. It does not correct an inaccurate system clock. If the universal time is also wrong, enable NTP synchronization as shown in Syncing the System Clock (NTP) . For manual clock adjustments, see the timedatectl command guide .

Checking the Current Time Zone

timedatectl allows you to view and change the system’s time settings. It is available on modern systemd-based Linux distributions.

To view the current time zone and synchronization status, run timedatectl without any arguments:

Terminal
timedatectl
output
                      Local time: Tue 2026-07-21 10:30:44 UTC
                  Universal time: Tue 2026-07-21 10:30:44 UTC
                        RTC time: Tue 2026-07-21 10:30:44
                       Time zone: Etc/UTC (UTC, +0000)
       System clock synchronized: yes
                     NTP service: active
                 RTC in local TZ: no

The Time zone line shows that the system is using UTC. System clock synchronized: yes means an NTP service has synchronized the clock, while RTC in local TZ: no means the hardware clock is stored in UTC, which is the preferred setting on Linux servers.

For scripts, print only the configured time zone with the following command:

Terminal
timedatectl show --property=Timezone --value
output
Etc/UTC

This machine-readable output avoids parsing the formatted status table.

The system time zone is normally configured by linking /etc/localtime to a binary zoneinfo file under /usr/share/zoneinfo. You can inspect the link with the ls command:

Terminal
ls -l /etc/localtime
output
lrwxrwxrwx 1 root root 27 Jul 21 09:12 /etc/localtime -> /usr/share/zoneinfo/Etc/UTC

The target shown after -> identifies the configured time zone.

Some upgraded Debian and Ubuntu systems may still have an /etc/timezone file. Current releases use /etc/localtime as the authoritative setting, and new Debian 13 installations do not create /etc/timezone, so use timedatectl or inspect the symlink instead.

Changing the Time Zone in Linux

Before changing the time zone, find its exact identifier. Most time zone names use a case-sensitive Region/City format, such as Europe/Berlin or America/New_York.

To view all available time zones, run:

Terminal
timedatectl list-timezones
output
...
America/Montserrat
America/Nassau
America/New_York
America/Nipigon
America/Nome
America/Noronha
...

Each line is a valid value for timedatectl set-timezone.

To find a specific zone, you can filter the list:

Terminal
timedatectl list-timezones | grep -i "sofia"

If you prefer an interactive prompt, run tzselect. The utility prints a suggested time zone identifier but does not change the system configuration. Use the printed value with timedatectl.

Once you identify the correct time zone, run the following command as root or a sudo user:

txt
sudo timedatectl set-timezone Region/City

For example, to change the system’s time zone to America/New_York you would type:

Terminal
sudo timedatectl set-timezone America/New_York

Use a location-based name such as America/New_York instead of an abbreviation such as EST. The location-based name automatically switches between EST and EDT when daylight saving time begins or ends.

To reset the system to UTC, run:

Terminal
sudo timedatectl set-timezone Etc/UTC

To verify the change, invoke the timedatectl command again:

Terminal
timedatectl
output
                      Local time: Tue 2026-07-21 06:55:09 EDT
                  Universal time: Tue 2026-07-21 10:55:09 UTC
                        RTC time: Tue 2026-07-21 10:55:09
                       Time zone: America/New_York (EDT, -0400)
       System clock synchronized: yes
                     NTP service: active
                 RTC in local TZ: no

The local time changed to EDT while the universal time remained in UTC, confirming that only the time zone changed. The setting takes effect immediately and does not require a reboot.

Syncing the System Clock (NTP)

Changing the time zone does not correct an inaccurate clock. If Universal time is wrong or System clock synchronized shows no, ask systemd to enable an available NTP synchronization service:

Terminal
sudo timedatectl set-ntp true

The command starts the first synchronization service that systemd recognizes on the machine. Depending on the distribution, this may be systemd-timesyncd, chronyd, or another installed NTP service.

Verify the synchronization status with:

Terminal
timedatectl

Confirm that the output shows System clock synchronized: yes and NTP service: active. If timedatectl reports that NTP is not available, check and configure the time synchronization daemon installed by your distribution.

Debian and Ubuntu Alternative: tzdata

On Debian and Ubuntu systems, you can also use the tzdata package to change the time zone through an interactive menu:

Terminal
sudo dpkg-reconfigure tzdata

Select a geographic area and then a city or region. The command updates /etc/localtime and prints the resulting local and universal times.

Changing the Time Zone Without systemd

On a non-systemd distribution, or inside a minimal container or chroot where timedatectl cannot connect to D-Bus, configure /etc/localtime directly. The time zone database must be available under /usr/share/zoneinfo.

Create or replace the /etc/localtime symbolic link in one step:

Terminal
sudo ln -sf /usr/share/zoneinfo/America/New_York /etc/localtime

The -s option creates a symbolic link, and -f replaces an existing destination. Verify the local time with the date command:

Terminal
date
output
Tue Jul 21 09:10:54 EDT 2026

The EDT abbreviation shows that the America/New_York daylight saving rule is active for this date.

Troubleshooting

The time zone name is rejected
Time zone identifiers are case-sensitive and must match an installed zoneinfo file. Filter timedatectl list-timezones using the city name, and install your distribution’s tzdata package if /usr/share/zoneinfo is missing.

timedatectl cannot connect to the system bus
This error means systemd or D-Bus is not running, which is common in minimal containers and chroot environments. Use the /etc/localtime symlink method shown above.

Local time is still wrong after changing the zone
Compare the Local time and Universal time lines in timedatectl. If the time zone is correct but the clock itself is wrong, enable or repair NTP synchronization instead of choosing another time zone.

An application still uses the old time zone
Some long-running applications cache time zone data when they start. Restart the affected application or service after confirming that timedatectl shows the new setting.

Conclusion

On systemd-based Linux systems, set the time zone with sudo timedatectl set-timezone Region/City so daylight saving changes are applied automatically. On systems without systemd, point /etc/localtime to the matching file under /usr/share/zoneinfo.

Linuxize Weekly Newsletter

A quick weekly roundup of new tutorials, news, and tips.

About the authors

Dejan Panovski

Dejan Panovski

Dejan Panovski is the founder of Linuxize, an RHCSA-certified Linux system administrator and DevOps engineer based in Skopje, Macedonia. Author of 800+ Linux tutorials with 20+ years of experience turning complex Linux tasks into clear, reliable guides.

View author page