156

Currently when I execute the date command from bash I get the following displayed

Thu May 17 12:21:00 IST 2012

Below is my timezone config based on executing dpkg-reconfigure tzdata

  Current default time zone: 'Europe/Dublin'
  Local time is now: Thu May 17 12:32:52 IST 2012.
  Universal Time is now: Thu May 17 11:32:52 UTC 2012.
  

Any idea how I change from IST to UTC/GMT?

6 Answers 6

199

Any idea how I change from IST to GMT?

To switch to UTC, simply execute sudo dpkg-reconfigure tzdata, scroll to the bottom of the Continents list and select Etc or None of the above; in the second list, select UTC. If you prefer GMT instead of UTC, it's just above UTC in that list. :)

7
  • 2
    Yes! I wish this was enabled by default.
    – wberry
    Aug 22, 2012 at 15:08
  • 1
    After I did what you wrote above, and changed the time zone, my server is still having the same wrong time, do I need to restart the system, or what?
    – user98095
    Oct 16, 2012 at 17:50
  • 10
    In Ubuntu 14.04.1, Etc is None of the above.
    – f01
    Jul 4, 2016 at 13:51
  • 2
    From the command line in Ubuntu, the following link provides the trivial 1-line command: askubuntu.com/a/524362/182454 Dec 15, 2016 at 6:29
  • Simplicity! (KISS) Love it, Thanks! On a minimal Server install the other time Zones are not available, just UTC, so installing sudo apt install tzdata is a MUST! Aug 27, 2019 at 18:39
95
sudo timedatectl set-timezone UTC

Will change your timezone to UTC system wide.

You can do timedatectl list-timezones to see all the available timezones.


excerpt from @MattJohnson's answer on SO

Zones like Etc/GMT+6 are intentionally reversed for backwards compatibility with POSIX standards. See the comments in this file.

You should almost never need to use these zones. Instead you should be using a fully named time zone like America/New_York or Europe/London or whatever is appropriate for your location. Refer to the list here.

0
14

In the old Un*x style (SunOS, HPUX...), you can do:

ln -fs /usr/share/zoneinfo/UTC /etc/localtime

Check the contents of /usr/share/zoneinfo to get the timezone you want/need.

For instance, Irish Summer Time (IST) can be defined as

-rw-r--r-- 1 root root 3661 Mar 13 22:18 /usr/share/zoneinfo/posix/Eire

or

lrwxrwxrwx 1 root root 13 Mar 13 22:18 /usr/share/zoneinfo/Europe/Dublin -> ../posix/Eire

However, the most important is to use a proper clock reference and a ntp daemon (openntpd for instance), as timezone is only used for displaying/converting the time to strings, not to store it (whatever the timezone, difference to 01/01/1970 is everywhere the same on Earth).

1
  • I can use this to change UTC to Asia/Kolkatta with.. sudo rm /etc/localtime (i had already this file so couldn't create symlink with next command, so i deleted it first), sudo ln -s /usr/share/zoneinfo/Asia/Kolkata /etc/localtime. I think this seems to be a general solution.
    – Ajeeb.K.P
    Feb 24, 2016 at 8:53
9

Updated for 14.04 to present

View Time and Date Status:

$ timedatectl status
                      Local time: Sun 2018-07-29 15:26:03 BST
                  Universal time: Sun 2018-07-29 14:26:03 UTC
                        RTC time: Sun 2018-07-29 14:26:03
                       Time zone: Europe/London (BST, +0100)
       System clock synchronized: yes
systemd-timesyncd.service active: yes
                 RTC in local TZ: no

View List of Timezones:
Listed Timezones (425)

$ timedatectl list-timezones
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
...
Pacific/Tongatapu
Pacific/Wake
Pacific/Wallis
UTC

Set Timezone to UTC:

$ timedatectl set-timezone UTC

View Time and Date Status:

$ timedatectl status
                      Local time: Sun 2018-07-29 14:46:27 UTC
                  Universal time: Sun 2018-07-29 14:46:27 UTC
                        RTC time: Sun 2018-07-29 14:46:27
                       Time zone: UTC (UTC, +0000)
       System clock synchronized: yes
systemd-timesyncd.service active: yes
                 RTC in local TZ: no*
4
  • Hey, can you help me to set timezone UTC+06:00?? thanks
    – Md Alamin
    Mar 21, 2019 at 3:35
  • I had a dig around, but set-timezone only allows you to set a timezone in the available list-timezones, you can't apply modifiers or offsets it seems. There may be another way to achieve setting UTC+06:00 but I couldn't find it... worth asking the forum in a new question. Mar 21, 2019 at 13:34
  • Hey I solved it, sudo timedatectl set-timezone Asia/Dhaka btw Thanks.
    – Md Alamin
    Mar 22, 2019 at 3:19
  • 1
    I misunderstood your requirement... there are numerous timezones in the available list-timezones set that meet the UTC+06:00, I thought you were looking for a way of applying a non-geographic generic UTC offset. Glad you found what you were looking for. Mar 22, 2019 at 16:36
6

Something like this?

$ date
Wed Jul 16 22:52:47 EDT 2014

$ cat /etc/timezone
America/New_York

$ sudo dpkg-reconfigure tzdata
$ service cron stop && service cron start
1

In case you need this for only a single command, say, ls, use this:

TZ=UTC ls -l --full-time

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .