How to Set or Change the Time Zone in Linux

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 .
| Task | Command |
|---|---|
| Show complete time status | timedatectl |
| Print the current time zone only | timedatectl show --property=Timezone --value |
| List all time zones | timedatectl list-timezones |
| Set time zone | sudo timedatectl set-timezone America/New_York |
| Reset to UTC | sudo timedatectl set-timezone Etc/UTC |
| Enable NTP sync | sudo timedatectl set-ntp true |
| Set without systemd | sudo 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:
timedatectl 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: noThe 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:
timedatectl show --property=Timezone --valueEtc/UTCThis 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:
ls -l /etc/localtimelrwxrwxrwx 1 root root 27 Jul 21 09:12 /etc/localtime -> /usr/share/zoneinfo/Etc/UTCThe 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:
timedatectl list-timezones...
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:
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:
sudo timedatectl set-timezone Region/CityFor example, to change the system’s time zone to America/New_York you would type:
sudo timedatectl set-timezone America/New_YorkUse 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:
sudo timedatectl set-timezone Etc/UTCTo verify the change, invoke the timedatectl command again:
timedatectl 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: noThe 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:
sudo timedatectl set-ntp trueThe 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:
timedatectlConfirm 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:
sudo dpkg-reconfigure tzdataSelect 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:
sudo ln -sf /usr/share/zoneinfo/America/New_York /etc/localtimeThe -s option creates a symbolic link, and -f replaces an existing destination. Verify the local time with the date
command:
dateTue Jul 21 09:10:54 EDT 2026The 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.
Tags
Linuxize Weekly Newsletter
A quick weekly roundup of new tutorials, news, and tips.
About the authors

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