Read in 3 minutes

last updated 

How To Set or Change Timezone on Debian 9

Using the correct timezone is important for many systems related tasks and processes. For example, the cron daemon uses the system’s timezone for executing cron jobs and the timestamps in the log files are based on the same system’s timezone.

The system’s timezone is set during the installation, but it can be easily changed at a later time. This tutorial shows how to set or change the timezone on Debian 9.

Prerequisites

The user you are logged in as must have sudo privileges to be able to change the system’s timezone.

Checking the Current Timezone

In Debian and other modern Linux distributions, the timedatectl command allows you to display and set the current system’s time and timezone.

timedatectl

As shown on the output below, the system’s timezone is set to “America/Chicago”:

      Local time: Mon 2019-03-11 16:46:45 CDT
  Universal time: Mon 2019-03-11 21:46:45 UTC
        RTC time: Mon 2019-03-11 21:46:45
       Time zone: America/Chicago (CDT, -0500)
 Network time on: yes
NTP synchronized: no
 RTC in local TZ: no

The system timezone is configured by symlinking /etc/localtime to a binary timezone identifier in the /usr/share/zoneinfo directory. Other option to check the timezone is to show the path the symlink points to using the ls command:

ls -l /etc/localtime
lrwxrwxrwx 1 root root 37 Jan 23 03:19 /etc/localtime -> ../usr/share/zoneinfo/America/Chicago

Changing Timezone in Debian

Before changing the timezone, you’ll need to find out the long name for the timezone you want to use. The timezone naming convention usually uses a “Region/City” format.

To list all available time zones, you can either list the files in the /usr/share/zoneinfo directory or use the timedatectl command.

timedatectl list-timezones
...
Europe/Lisbon
Europe/Ljubljana
Europe/London
Europe/Luxembourg
Europe/Madrid
Europe/Malta
...

Once you identify which time zone is accurate to your location, run the following command as sudo user:

sudo timedatectl set-timezone your_time_zone

For example, to change the system’s timezone to Europe/Ljubljana you would run:

sudo timedatectl set-timezone Europe/Ljubljana

Verify the change by issuing the timedatectl command:

timedatectl
      Local time: Mon 2019-03-11 22:51:27 CET
  Universal time: Mon 2019-03-11 21:51:27 UTC
        RTC time: Mon 2019-03-11 21:51:26
       Time zone: Europe/Ljubljana (CET, +0100)
 Network time on: yes
NTP synchronized: yes
 RTC in local TZ: no

If you are running an older version of Debian and the timedatectl command is not present on your system you can change the timezone by symlinking /etc/localtime to the timezone in the /usr/share/zoneinfo directory.

Delete the current /etc/localtime file or symlink:

sudo rm -f /etc/localtime

Identify the timezone you want to configure and create a symlink:

sudo ln -s /usr/share/zoneinfo/Europe/Ljubljana /etc/localtime

You can confirm the change either by listing the /etc/localtime file or issuing the date command:

date
Mon Mar 11 22:55:04 CET 2019

Conclusion

In this guide, you learned how to change your Debian system’s timezone. Feel free to leave a comment if you have any questions.