How To Change Timezone on a CentOS 6 and 7

Posted on in Categories , , last updated January 13, 2015

I set my time zone to ‘America/New_York’ on a CentOS Linux 7 server. I want to see date and time in my timezone in log files. How can I change the current timezone from ‘America/New_York’ to ‘America/Chicago’ using command line?

You can easily change timezone in CentOS Linux using the following methods.

CentOS timezone config files and directories

  1. /usr/share/zoneinfo/ – The system timezone directory contains the files as per timezone name. For example, the file /usr/share/zoneinfo/America/New_York represents time zone for New York.
  2. /etc/localtime – It is a symlink to the file localtime or to the correct timezone file in the system located in /usr/share/zoneinfo/ directory.

How do I see the current time zone?

Type the date command or the ls command:
$ date
$ ls -l /etc/localtime

Sample outputs:

Fig.01: Finding current timezone on a CentOS Linux
Fig.01: Finding current timezone on a CentOS Linux

Change the current timezone in CentOS 7

To find list of all available time zones, run:
# timedatectl list-timezones
##*** Grep possible Asian timezones ***##
# timedatectl list-timezones | grep Asia

Sample outputs:

Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Bamako
Africa/Bangui
Africa/Banjul
....
..
America/Dawson
America/Dawson_Creek
America/Denver
America/Detroit
America/Dominica
America/Edmonton
America/Eirunepe
America/El_Salvador
America/Fortaleza
America/Glace_Bay
....
..
Pacific/Saipan
Pacific/Tahiti
Pacific/Tarawa
Pacific/Tongatapu
Pacific/Wake
Pacific/Wallis

The syntax is as follows to set timezone and need to run as root user:

# timedatectl set-timezone time_zone

In this example, set timezone to America/Chicago

# timedatectl set-timezone America/Chicago

Verify new settings by typing the following two commands:
# date
# ls -l /etc/localtime

Sample outputs:

Fig.02: Change the currently used time zone
Fig.02: Change the currently used time zone

Change the current timezone in CentOS 6 and older

Type the following commands as root:

cp /etc/localtime /root/old.timezone
rm /etc/localtime
ln -s /usr/share/zoneinfo/America/Chicago /etc/localtime

Verify new settings by typing the following two commands:

date
ls -l /etc/localtime

10 comment

  1. Good information. If I reboot the server it reverts to the old time. To make the change permanent I had to:

    vi /etc/sysconfig/clock

    # change value
    ZONE=”/America/Chicago”

    Then after reboot the time change will still apply.

  2. Thank for posting this Vivek!

    Changing /etc/localtime worked great for me… no need to edit /etc/sysconfig/clock.
    (file doesn’t exist on my Centos 7 minimal install.)

    Cheers!

  3. what needs to set in .bash_profile ?? I want to set SaudiTime zone…I had done changes in /etc/sysconfig/clock and also .bash_profile also with Asia/Riyadh . And when i put .bash_profile it shows lrwxrwxrwx. 1 root root 33 May 23 16:22 /etc/localtime -> ../usr/share/zoneinfo/Asia/Riyadh … But it not reflect when i check with ‘date’ command…Please suggest

  4. Thanks for this. My cron however is still firing at UTC – anything that I am missing? I tried setting CRON_TZ in crontab to Asia/Kolkata. But, that isn’t working either. Any help appreciated. Thanks!

Leave a Comment