The Ubuntu server's current date and time is different from the time zone date and time. I have tried using:

sudo date "30 Sep 2015 4:43:42"

to change it but it did not change the date and time, just printed on terminal the date and time I changed, but when I executed:

sudo hwclock --show

The date and time is still the old one.

What is the correct way to change date and time of Ubuntu Server?

  • you really typed "sudo date newdate" - the word "newdate"? – Wolfgang Sep 30 '15 at 7:54
  • 1
    Nope. I have edited my question. I typed "30 Sept 2015 4:43:42" – Priska Aprilia Sep 30 '15 at 7:56

You can set the system date with this command:

sudo date --set="2015-09-30 10:05:59.990"

Then when using date, it should be showed correctly.

Now you should also the set hardware clock in the BIOS of the system, that the setting persists over a reboot (dureing the startup the system time is set to the value of the hardware clock). Do that with hwclock:

sudo hwclock --systohc

This gets the system clocks (sys) value and sets the hardware clock (hc). Check it with the hwclock command. Both hwclock and date should now show the same date and time.

To set your timezone, you can use this command:

sudo dpkg-reconfigure tzdata

BTW: If you use a this machine as a server, I strongly recommend using an NTP-Client to sync the time over network. So you can guarantee that all your servers have the exactly same time set. This will sync the time while the machine runs. If you have applications which are dependent of synced time over server, I recommend the NTP-Daemon. The longer it runs in the background, the more precise is the time.

| improve this answer | |
  • 1
    I missed the clock synchronization step. Thank you for your answer, it helped me! – Priska Aprilia Sep 30 '15 at 8:19
  • 1
    3 option helps, it changed etc/timezone =) like php.net/manual/en/timezones.php !!! absolutely identical !!! – Vladimir Ch Feb 25 '17 at 17:08
  • @VladimirCh Fortunatelly time zones names are stadarized, so we don't have to make any adjustments between systems. Oh, wait... there are some Microsoft version too... – PeterM Mar 25 '17 at 12:46
  • 2
    I try to change but its not changing:- $ sudo date --set="2015-09-30 10:05:59.990" Wed Sep 30 10:05:59 +0530 2015 $ date Thu May 23 15:10:37 +0530 2019 – Vinod May 23 '19 at 9:43
  • this should not be the accepted answer since it mentions timezone explicitly – Nick Andriopoulos Jun 3 at 8:43
  1. Search for your timezone
timedatectl list-timezones
  1. Set your timezone
sudo timedatectl set-timezone America/Toronto
  1. Enable timesyncd
sudo timedatectl set-ntp on

With this, time should be set and synchronized.

You can see more on this tutorial : https://www.digitalocean.com/community/tutorials/how-to-set-up-time-synchronization-on-ubuntu-18-04

| improve this answer | |
  • 1
    Best way to fix it without manually set hours and minutes! Thanks a lot! – Rafael Moni Jun 20 '19 at 13:29

I dislike setting system time manually. So to fix this issue I had to combine two different answers.
To fix system time you have to use this code:

sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"

as given in this answer
Then you sync the hardware clock with system clock using

sudo hwclock --systohc

as given by @chaos in this thread.

| improve this answer | |

just type in

sudo date newdatestring

with newdatestring in the format nnddhhmmyyyy.ss

  • nn: the (two digit) month (01 to 12)
  • dd: the (two digit) day (01 to 31), with the regular rules for days according to month and year applying
  • hh: the (two digit) hour (00 to 23)
  • mm: the (two digit) minute (00 to 59)
  • yyyy: the year; it can be two digit or four digit
  • ss is two digit seconds (00 to 59). Notice the period ‘.’ before the ss.

But beside the date command, maybe you prefer the NTP "solution" (network time protocol): Serverguide - NTP, much easier to handle and more precise than setting the date by hand. You can use a cronjob or the ntp daemon (ntpd) to update you time every x hours/minutes...

Hope this helps!

| improve this answer | |
  • invalid date range when i tried with "093005082015.15" which stands for 30 Sept 2015, 05:08:15 – Priska Aprilia Sep 30 '15 at 8:14
  • sudo date "093005082015.15" working on mine. – vusan Dec 29 '17 at 6:16

For those looking for the epoch seconds version

  1. Set the current date and time

    sudo date -s @1565864862
  2. Get the current date and time

    date +%s

    outputs 1565864862

| improve this answer | |

Me helped:

1 - step (preparation)

 timedatectl set-local-rtc 0
 sudo timedatectl set-ntp 1
 sudo hwclock --systohc
 sudo timedatectl set-ntp 0

2 - step (set datetime)

sudo timedatectl set-time "06:24:00"
sudo timedatectl set-time "2020-04-23"
sudo hwclock --systohc


sudo date --set="2020-04-23 06:24:25.990"
sudo hwclock --systohc

3 - step (check datetime)


| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.