How to change Timezone in CentOS 6 / RHEL 6
In CentOS 6, timezone files are located under /usr/share/zoneinfo
. So, if your zone is for example, America/Chicago (UTC -6), it would be /usr/share/zoneinfo/America/Chicago
and so on.
CentOS 6, uses a file called ‘localtime’ located under /etc to determine it’s currently set timezone.
# ls -la /etc/localtime
This file, is either the actual time zone file moved to this location or a symlink to the timezone under zoneinfo directory. So if you want to change the timezone, first you need to determine which timezone to use and then symlink it to localtime. You can do that using the following:
# rm -f /etc/localtime
# ln -s /usr/share/zoneinfo/Asia/Dhaka /etc/localtime
# date
This would set the current timezone to GMT +6 BDT or Asia/Dhaka timezone, zone I belong to.
How to change timezone in CentOS 7 or RHEL 7
CentOS 7, comes with a tool called ‘timedatectl’. This can be used to find and set the symlink for you instead of doing the work that were required in CentOS 6.
To list available time zones, run:
# timedatectl list-timezones
You can find your desired timezone, as following:
# timedatectl list-timezones | grep Chicago
Now, to set a time zone, use the command set-timezone with timedatectl command. For example, if I want to set the time zone to America/Chicago, I would run the following:
# timedatectl set-timezone America/Chicago
# date
This also should create the symlink of locatime file to the zoneinfo directory. You can see that with the following:
# ls -l /etc/localtime