How To Change Timezone on a CentOS 6 and 7

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 the command line? How can I change timezone on a CentOS 6 and 7 using the ssh based session?

A time zone is nothing but a region of the globe that observes a uniform standard time for constitutional, business and cultural purposes. In a short time zone refers to the local time of a country. You can easily change timezone in CentOS Linux using the following methods.
Tutorial details
Difficulty Easy (rss)
Root privileges Yes
Requirements CentOS/RHEL
Time 2m

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.

Change Timezone on a CentOS 6 and 7

Let us see some examples to change timezone or set a new time zone on a CentOS Linux.

How do I see the current time zone on CentOS Linux?

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

Sample outputs:

Fig.01: Finding current timezone on a CentOS Linux

Another option is to type the following command on systemd based distro such as CentOS 7 to see timezone along with the grep command and timedatectl command:
timedatectl
timedatectl | grep -i 'time zone'
date

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

Change the current timezone in CentOS 6 and older

You need to use the ln command to set timezone on Centos 6. 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

Conclusion

You just learned how to change Timezone on CentOS Linux version 5, 6, and 7. The commands described here should also work with RHEL version 5, 6, and 7. For more info on timezone see this wiki page here. I also suggest that you read the following man pages using the man command:
$ man 1 timedatectl

🐧 If you liked this page, please support my work on Patreon or with a donation.
🐧 Get the latest tutorials on SysAdmin, Linux/Unix, Open Source/DevOps topics:
CategoryList of Unix and Linux commands
File Managementcat
FirewallAlpine Awall CentOS 8 OpenSUSE RHEL 8 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 20.04
Network Utilitiesdig host ip nmap
OpenVPNCentOS 7 CentOS 8 Debian 10 Debian 8/9 Ubuntu 18.04 Ubuntu 20.04
Package Managerapk apt
Processes Managementbg chroot cron disown fg jobs killall kill pidof pstree pwdx time
Searchinggrep whereis which
User Informationgroups id lastcomm last lid/libuser-lid logname members users whoami who w
WireGuard VPNAlpine CentOS 8 Debian 10 Firewall Ubuntu 20.04
12 comments… add one
  • Mike T May 11, 2015 @ 15:35

    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
    Next:
    # change value
    ZONE="/America/Chicago"

    Then after reboot the time change will still apply.

    • Jay Apr 1, 2016 @ 1:05

      Thanks Mike. I managed to lose the timezone with a yum update. Hopefully this will make it stick.

  • jfgrissom Jul 27, 2015 @ 5:35

    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!

  • aref ghobadi Aug 14, 2015 @ 17:19

    thank you very very much

  • Rajeev Rumale Sep 11, 2015 @ 10:14

    Thanks Vivek that was really helpful.

  • pro003 Dec 31, 2015 @ 12:07

    like always vivek saves the day ;-)

  • raghu May 23, 2016 @ 16:30

    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

  • amol Jul 21, 2016 @ 7:20

    thanks you save my day :)

  • Nikhil Karkare Oct 12, 2016 @ 3:00

    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!

  • Jalal Mar 13, 2017 @ 16:30

    Hi,
    Thanks a lot…

  • Marc L. Dorcean Sep 9, 2020 @ 13:54

    Why don’t you specify from which directory to execute the symbolic link? I would think that would make all the difference.

    • 🐧 Vivek Gite Sep 9, 2020 @ 14:05

      You can use any directory as we are using full path as root user.

Leave a Reply

Your email address will not be published. Required fields are marked *

Use HTML <pre>...</pre>, <code>...</code> and <kbd>...</kbd> for code samples.