How to Set Timezone on Debian 13, 12 and 11

Set timezone on Debian 13, 12, and 11 with timedatectl, tzdata, or GNOME. Covers /etc/localtime, /etc/timezone, UTC, and common fixes.

Last updatedAuthorJoshua JamesRead time6 minGuide typeDebianDiscussion1 comment

Wrong timestamps make log reviews, cron jobs, and certificate checks harder than they need to be. The fastest way to set the timezone on Debian is usually timedatectl, while Debian 13 (Trixie), Debian 12 (Bookworm), and Debian 11 (Bullseye) still let you switch zones through dpkg-reconfigure tzdata or a desktop settings panel.

The timezone setting on Debian lives in /etc/localtime on all three releases. Debian 12 and Debian 11 also keep /etc/timezone, while Debian 13 usually does not, so you can change the zone, verify it from the shell, and handle the common timedatectl edge cases without guessing which file still matters.

Set Timezone on Debian

Most readers should use the command-line method because it works the same way over SSH, on headless systems, and on desktop installs. The interactive tzdata menu and GNOME Settings are still useful when you want to browse locations instead of typing a Region/City name by hand.

MethodBest ForWorks Over SSHNotes
timedatectlFast command-line changesYesBest default on normal systemd-based Debian installs
dpkg-reconfigure tzdataInteractive terminal selectionYesUseful when you want to browse regions and cities
GNOME SettingsDesktop point-and-click changesNoRequires an active graphical session

Use this quick pick if you are deciding between them:

  • Use timedatectl for servers, remote shells, and scripts.
  • Use dpkg-reconfigure tzdata when you want an interactive menu in the terminal.
  • Use GNOME Settings only when you are already working in Debian’s desktop session.

To change the timezone on Debian from the command line, run sudo timedatectl set-timezone Region/City. The subcommand is set-timezone, with a hyphen. To check the current Debian timezone first, use timedatectl show -p Timezone --value for the compact value or timedatectl status for full status output.

Check the Current Timezone on Debian

Check the current setting before you change anything. For a compact answer, ask systemd for only the timezone value:

timedatectl show -p Timezone --value
Australia/Perth

Use full status when you also need the hardware-clock line or synchronization context. Relevant lines include:

timedatectl status
                Time zone: Australia/Perth (AWST, +0800)
          RTC in local TZ: no

The Time zone line is the value you are changing. RTC in local TZ: no is the normal Linux default and means the hardware clock is stored in UTC.

List Available Timezones on Debian

Debian uses the standard IANA timezone database, so the name must follow the Region/City pattern. Filter the list when you already know part of the city or zone name.

timedatectl list-timezones | grep 'New_York'
America/New_York

If you already know the exact name, you can skip straight to the next step. When you are unsure, start with a broad region such as America, Europe, Asia, or Australia.

Change the Timezone on Debian with timedatectl

This is the fastest way to change timezone on Debian from the command line. Replace America/New_York with the zone you want from the previous step.

These commands use sudo because timezone changes apply to the whole system. If your account does not have sudo access yet, follow how to add a user to sudoers on Debian. If you manage the machine remotely, make sure you can install SSH and enable it on Debian before you depend on shell-only administration.

sudo timedatectl set-timezone America/New_York

The change is immediate. Verify it from the shell:

timedatectl show -p Timezone --value
America/New_York

If you also want to confirm the underlying zoneinfo link, read /etc/localtime directly:

readlink -f /etc/localtime
/usr/share/zoneinfo/America/New_York

Debian 12 and Debian 11 also update /etc/timezone when you change the zone this way. Debian 13 usually does not create that file, so use the next subsection if you want to see how your release stores the setting.

Check /etc/localtime and /etc/timezone on Debian

The authoritative setting is always /etc/localtime, but many Debian users still check /etc/timezone, especially on Debian 12 and Debian 11. Use these commands if you want to see how your release stores the current zone.

readlink -f /etc/localtime
if [ -e /etc/timezone ]; then
  cat /etc/timezone
else
  echo "/etc/timezone is not present"
fi
/usr/share/zoneinfo/America/New_York
/etc/timezone is not present

That missing-file result is normal on Debian 13 (Trixie). On Debian 12 (Bookworm) and Debian 11 (Bullseye), the conditional usually prints the zone name itself, such as America/New_York.

Change the Timezone on Debian with dpkg-reconfigure tzdata

Use the tzdata dialog when you want a guided menu instead of typing a region and city manually. It works well over SSH because the prompts stay inside the terminal.

sudo dpkg-reconfigure tzdata

Choose your geographic area first, then the city or region that matches your local time.

After you confirm the choice, Debian prints a short summary. Relevant output includes the selected zone line, followed by local and universal time lines that change each run:

Current default time zone: 'Australia/Perth'

The city and abbreviation reflect the zone you selected. Confirm the shell sees the same result:

timedatectl show -p Timezone --value
Australia/Perth

Change the Timezone on Debian in GNOME

On a Debian desktop, GNOME lets you change the timezone without opening a shell. This method needs an active graphical session, so it is not useful on headless servers or SSH-only systems.

Open Settings, choose Date & Time, and turn off Automatic Time Zone if Debian keeps selecting the wrong location.

Select Time Zone, then click your city or the nearest major region on the map. GNOME applies the change as soon as you confirm the new location.

Open a terminal afterward so logs and scripts match what the desktop now shows:

timedatectl show -p Timezone --value
Australia/Perth

Set Debian Timezone to UTC

UTC is the cleanest choice for servers, containers, and shared systems where logs need a single time base. To set Debian to UTC, use the same command-line method with UTC as the zone name.

sudo timedatectl set-timezone UTC

Verify the result:

timedatectl show -p Timezone --value
UTC

If you prefer the interactive path, run sudo dpkg-reconfigure tzdata, choose Etc, and then select UTC.

Fix Common Debian Timezone Problems

Most timezone issues on Debian come down to one of three cases: the command is missing, the system is not running systemd, or the clock source is wrong even though the timezone name is correct.

Fix timedatectl: command not found on Debian

On a standard Debian install, timedatectl is provided by the systemd package. Check the expected package ownership first:

dpkg -S /usr/bin/timedatectl
systemd: /usr/bin/timedatectl

If that file is missing, you are usually inside a stripped-down container, chroot, or other non-standard image. In that case, skip to the next subsection because the file-based method is more reliable than trying to force timedatectl into an environment that does not manage time through systemd.

Fix System has not been booted with systemd on Debian

That error means PID 1 is not systemd, so timedatectl cannot talk to the service it expects. Point /etc/localtime at the correct zone file directly and verify the result with date or readlink -f /etc/localtime.

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

If you are on Debian 12 or Debian 11 and want the plain-text file to match, write the same value to /etc/timezone. Skip this compatibility file on Debian 13 unless a local application explicitly needs it. The tee command is used here because a plain > redirection would still run as your unprivileged shell.

printf '%s\n' 'America/New_York' | sudo tee /etc/timezone > /dev/null

Verify the fallback method without timedatectl:

readlink -f /etc/localtime
/usr/share/zoneinfo/America/New_York

Run date too if you want a human-readable check. The timezone abbreviation should match the zone you picked, while readlink confirms which file under /usr/share/zoneinfo/ is currently linked.

Fix the Wrong Time After Changing Timezone on Debian

If the city is correct but the hour is still wrong, the problem is usually the hardware clock or time synchronization rather than the timezone name itself. Dual-boot systems are the common exception because Windows often expects the RTC to use local time instead of UTC.

timedatectl status | grep "RTC in local TZ"
          RTC in local TZ: no

no is the normal Linux setting. Local RTC is a compatibility workaround for dual-boot systems, and Debian may warn that it can cause daylight-saving and timezone problems. If you intentionally need Windows-style local RTC behavior, switch it first:

sudo timedatectl set-local-rtc 1

Then verify the status line:

timedatectl status | grep "RTC in local TZ"
          RTC in local TZ: yes

Return to UTC hardware clock storage with:

sudo timedatectl set-local-rtc 0

If the correct timezone still shows the wrong hour, the system clock itself needs to sync from NTP or your hypervisor rather than another timezone change.

Conclusion

Debian now reads the intended zone from /etc/localtime, and timedatectl or date confirms what logs and scheduled jobs will use. For unattended systems, configure unattended upgrades on Debian so timezone data stays current. For remote systems, verify shell access before relying on the command-line path.

Share this guide

Help another Linux user troubleshoot faster

Share this guide with someone troubleshooting Linux systems or saving it for later.

Follow LinuxCapable

Want more LinuxCapable guides in Google?

Add LinuxCapable as a preferred source so Google can show more of our fresh Linux tutorials in Top Stories and From your sources when relevant.

Add LinuxCapable as a preferred source on Google
Search LinuxCapable

Need another guide?

Search LinuxCapable for package installs, commands, troubleshooting, and follow-up guides related to what you just read.

Found this guide useful?

Support LinuxCapable to keep tutorials free and up to date.

Buy me a coffeeBuy me a coffee

1 thought on “How to Set Timezone on Debian 13, 12 and 11”

  1. Very useful article, thank you.

    However I have found that when running in chroot (debian 13 installed via debootstrap on a debian 11 host), “timedatectl set-timezone…” changes the host timezone, not the chrooted environment. /etc/localtime remains unchanged in the chrooted environment, but modified in the host environment.

    To change the timezone in the chrooted environment (in preparation of image for booting) directly link the localtime file:

    ln -sf /usr/share/zoneinfo/Region/City /etc/localtime

    Reply
Before commenting, please review our Comments Policy.
Formatting tips for your comment

You can use basic HTML to format your comment. Useful tags currently allowed in published comments:

You type Result
<code>command</code> command
<strong>bold</strong> bold
<em>italic</em> italic
<blockquote>quote</blockquote> quote block

Got a Question or Feedback?

We read and reply to every comment - let us know how we can help or improve this guide.

Verify before posting: