60

Is there such command for changing the System clock's date and time?

For example:

The current date and time is January 1, 1970 22:30:59:980 where 59 and 980 refers to the seconds and millisecods respectively

And I want to change it to January 2, 1971 23:31:59:990

Is there a command for this?

  • Just in case someone is interested in also changing the time zone. http://askubuntu.com/questions/3375/how-to-change-time-zone-settings-from-the-command-line – nassim Dec 09 '15 at 21:11

6 Answers6

66

To set the time in Ubuntu from the terminal, you can use the following command:

sudo date new_date_time_string

where new_date_time_string has to follow the format MMDDhhmmyyyy.ss which is described below:

  • MM is a two digit month, between 01 to 12
  • DD is a two digit day, between 01 and 31, with the regular rules for days according to month and year applying
  • hh is two digit hour, using the 24-hour period so it is between 00 and 23
  • mm is two digit minute, between 00 and 59
  • yyyy is the year; it can be two digit or four digit
  • ss is two digit seconds. Notice the period . before the ss.

Source: Manage Time in Ubuntu Through Command Line.

So, in your particular case, you can use:

sudo date 010224311971.59

Or, you can use:

sudo date --set="1971-01-02 23:31:59.990"  && date --rfc-3339=ns

which is exactly what you asked.

Source:

Manuel Jordan
  • 1,768
  • 7
  • 30
  • 50
Radu Rădeanu
  • 169,590
21

The easy way:

ntpdate -s ntp.ubuntu.com

To change the timezone:

dpkg-reconfigure tzdata

Probably you need sudo.

Eliah Kagan
  • 117,780
Ninecols
  • 235
  • 2
  • 3
  • 4
    Which NTP server is going to set the time to January 1971, I wonder. – muru Apr 30 '15 at 15:53
  • Is your server connected to internet? Check official documentation at https://help.ubuntu.com/lts/serverguide/NTP.html – Ninecols May 12 '15 at 14:43
6

You can use the date command to change the time and you'll need sudo permission to do it; an example to set the date to 27 June 2014 and the time to 1:17 AM is:

sudo date --set "27 Jun 2014 1:17:00"
kos
  • 35,891
aabhas
  • 193
6

Since systemd was introducted in Ubuntu, the correct way is:

# timedatectl set-time "RFC 3339-compliant string"

e.g.

# timedatectl set-time "2002-10-02T10:00:00-05:00"
# timedatectl set-time "10:35"
# timedatectl set-time "+2 hours"
jojman
  • 253
1

Short versions for setting date or time only:

To set the date (will set the time to 0:0:0):

date +%Y%m%d -s "19710102"

To set the time only:

date +%T -s "23:31:59"

You could add the desired ".990" to the seconds.

Read the man page for more options and formats regarding the date command:

man date

Note: you may also want to check or set the hardware clock. Read about it here.

karel
  • 114,770
elomage
  • 1,400
-3
sudo date --set="Mon Feb 16 08:49:56 IST 2015"

That would be correct statement in UBUNTU 14.04.

muru
  • 197,895
  • 55
  • 485
  • 740