Linux Set Date and Time From a Command Prompt

Posted on in Categories , , , , , , last updated March 13, 2016

How can I set the system date and time from the command prompt (bash shell)? I don’t have GUI installed and I am login over ssh session. How can I set date under Linux operating systems?

Use the date command to display the current date and time or set the system date / time over ssh session. You can also run the date command from X terminal as root user.

This is useful if the Linux server time and/or date is wrong, and you need to set it to new values from the shell prompt.

You must login as root user to use date command.

Linux Display Current Date and Time

Just type the date command:
$ date
Sample outputs:

Wed Apr 23 10:32:59 CDT 2014

Linux Display The Hardware Clock (RTC)

Type the following hwclock command to read the Hardware Clock and display the time on screen:
# hwclock -r
OR
# hwclock --show
OR show it in Coordinated Universal time (UTC):
# hwclock --show --utc
Sample outputs:

Wed 23 Apr 2014 10:36:23 AM CDT  -0.157239 seconds

Linux Set Date Command Example

Use the following syntax to set new data and time:

date --set="STRING"

For example, set new data to 2 Oct 2006 18:00:00, type the following command as root user:
# date -s "2 OCT 2006 18:00:00"
OR
# date --set="2 OCT 2006 18:00:00"
You can also simplify format using following syntax:
# date +%Y%m%d -s "20081128"

Linux Set Time Examples

To set time use the following syntax:
# date +%T -s "10:13:13"
Where,

  • 10: Hour (hh)
  • 13: Minute (mm)
  • 13: Second (ss)

Use %p locale’s equivalent of either AM or PM, enter:
# date +%T%p -s "6:10:30AM"
# date +%T%p -s "12:10:30PM"

How do I set the Hardware Clock to the current System Time?

Use the following syntax:
# hwclock --systohc
OR
# hwclock -w

A note about systemd based Linux system

With systemd based system you need to use the timedatectl command to set or view the current date and time. Most modern distro such as RHEL/CentOS v.7.x+, Fedora Linux, Debian, Ubuntu, Arch Linux and other systemd based system need to the timedatectl utility. Please note that the above command should work on modern system too.

timedatectl: Display the current date and time

Type the following command:
$ timedatectl
Sample outputs:

Fig.01: Systemd Linux timedatecetl command to display the current date and time
Fig.01: Systemd Linux timedatecetl command to display the current date and time

How do I change the current date using the timedatectl command?

To change the current date, type the following command as root user:
# timedatectl set-time YYYY-MM-DD
OR
$ sudo timedatectl set-time YYYY-MM-DD
For example set the current date to 2015-12-01 (1st, Dec, 2015):
# timedatectl set-time '2015-12-01'
# timedatectl

Sample outputs:

      Local time: Tue 2015-12-01 00:00:03 EST
  Universal time: Tue 2015-12-01 05:00:03 UTC
        RTC time: Tue 2015-12-01 05:00:03
       Time zone: America/New_York (EST, -0500)
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
      DST active: no
 Last DST change: DST ended at
                  Sun 2015-11-01 01:59:59 EDT
                  Sun 2015-11-01 01:00:00 EST
 Next DST change: DST begins (the clock jumps one hour forward) at
                  Sun 2016-03-13 01:59:59 EST
                  Sun 2016-03-13 03:00:00 EDT

To change both the date and time, use the following syntax:
# timedatectl set-time YYYY-MM-DD HH:MM:SS
Where,

  1. HH : An hour.
  2. MM : A minute.
  3. SS : A second, all typed in two-digit form.
  4. YYYY: A four-digit year.
  5. MM : A two-digit month.
  6. DD: A two-digit day of the month.

For example, set the date ’23rd Nov 2015′ and time to ‘8:10:40 am’, enter:
# timedatectl set-time '2015-11-23 08:10:40'
# date

How do I set the current time only?

The syntax is:
# timedatectl set-time HH:MM:SS
# timedatectl set-time '10:42:43'
# date

Sample outputs:

Mon Nov 23 08:10:41 EST 2015

How do I set the time zone using timedatectl command?

To see list all available time zones, enter:
$ timedatectl list-timezones
$ timedatectl list-timezones | more
$ timedatectl list-timezones | grep -i asia
$ timedatectl list-timezones | grep America/New

To set the time zone to ‘Asia/Kolkata’, enter:
# timedatectl set-timezone 'Asia/Kolkata'
Verify it:
# timedatectl

      Local time: Mon 2015-11-23 08:17:04 IST
  Universal time: Mon 2015-11-23 02:47:04 UTC
        RTC time: Mon 2015-11-23 13:16:09
       Time zone: Asia/Kolkata (IST, +0530)
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

How do I synchronizing the system clock with a remote server using NTP?

Simply type the following command:
# timedatectl set-ntp yes
Verify it:
$ timedatectl
Sample outputs:

      Local time: Mon 2015-11-23 08:18:49 IST
  Universal time: Mon 2015-11-23 02:48:49 UTC
        RTC time: Mon 2015-11-23 02:48:50
       Time zone: Asia/Kolkata (IST, +0530)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a
See also:
  • You can also set new timzone using this mini-howto.
  • Man pages – hwclock(8),date(1),timedatectl(8)

Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin and a trainer for the Linux operating system/Unix shell scripting. He has worked with global clients and in various industries, including IT, education, defense and space research, and the nonprofit sector. Follow him on Twitter, Facebook, Google+.

145 comment

    1. Any of the following should work:
      export http_proxy=http://server.address:port
      export https_proxy=https://server.address:port
      export ftp_proxy=ftp://server.address:port

  1. It helped me to change the server timings without any difficulty. I tried to get help from the command prompt but it didn’t render anything. Thanks for the solution.

  2. i had to set the date by using {date -s “wed jul 30 19:41:00 BST 2008”} while at the root.

  3. hey thanks a million,
    this worked right the first time…

    was wondering how to do it untill i found ur site…

    keep up the good work…very neat for freshers to *nix

    cheers

  4. You could also simplify the format of input date as example below
    date +%Y%m%d -s "20080817" (set new date to August 17, 2008) without typing full date format

  5. thank you!!!!

    i have fedora 9 i can not change the time using his time control application. he ask for my root password, and then he says that it is not correct…. crazy program :)

    the man page of date did not showed me any example, i what i tried was not accepted.

    thank you.

  6. The man page for the ‘date’ command is WORTHLESS.

    Now that I read here how to format the input string in order to set the clock my life is good. THANK YOU!

  7. date set=”2 OCT 2006 18:00:00″

    it is doesn’t work.
    I have to change my linux system time./ Right now it is shows correct time on my machine but when i open my gmail account it’s shows wrong time of my emails.Due to it’s system time.

    Any idea?

  8. Anyone has ideas how to set Dates 1 day or 2 dates ago. What about setting it +2 hours in advance etc ?

  9. Hi All,

    The problem I’m having is, the time/date changes at the time I do it, but doesn’t hold after a reboot – how can i lock it into the Server’s clock..

    Neelesh – Try date -s ”2 OCT 2006 18:00:00″ instead

    Nickalf. . .

  10. date -s ”2 OCT 2006 18:00:00″ is set for the time being. Need o set CMOS clock using “hwclock” command. That will be right solution.

  11. Thanks alot

    THis has worked like yesterday

    Keep up the good work.

    Regards,

    George Ndung’u
    IT & Logistics Manager
    LSHS

  12. One more thank you for your simple explanation and great example. I couldn’t figure out the format from reading the date man page.

  13. Thank you! This information was very helpful.

    Some of the examples you have presented here would be hard to derive from the date man page.

  14. I’ve just got a Datawind Ubisurfer and to set the date/time I had to type:
    # date 07252208002009
    25 July 2009 time 20:08

    decodes as # date MMDDhhmmssYYYY

    month day hour minutes seconds year
    Thanks for other scripts they sent me in the right direction.
    (This does come up as UTC whatever that is!)

  15. Thank you , Murugesh . This is the first time I have ever found those ‘Info’ pages useful . I need this for a SQL script at work that needs to fetch data from 7 days ago . Murugesh to the rescue!

    [ ~ ] date –date=’7 days ago’
    Wed Oct 28 20:39:35 GMT 2009
    [ ~ ]

    — Mario

  16. $ sudo date +%Y%m%d%T -s “20081225 10:05:00”

    [sudo] password for nenopera:
    2008122510:05:00

    $ date

    Thu Dec 25 10:05:02 EST 2008

  17. `date +%G%m%d`-acb.txt
    this is my current date format. I wants to set last day’s date instead of current. I try this from last week . Plz help me…………

  18. satish,

    follow the steps
    1.check date with date command
    2.set date with date -s command
    3.hwclock –systohc
    4.hwclock –show

    Vishal

  19. # date set=”2 OCT 2006 18:00:00″ wrong!!!!
    # date –set=”2 OCT 2006 18:00:00″

  20. hai…
    im have a problem about time on fedora
    im use tht comman date, its change but if i restart my fedora is time will change
    and wrong time after restart the komputer..
    can help me?

  21. now i understand how tht comman
    tq friend..
    now my fedora time is ok
    the time is ok not change anymore..
    Tq

  22. not a big deal but small typo:
    # 30: Second (ss)
    should read 13 or in the example it should be :30

  23. hello i want to change date separator… from / to .(dot) can u help me?
    for example 23/03/2011 to 23.03.2011

  24. View:
    hwclock –show
    date
    ls -l /etc/localtime

    Change:
    To change the time use date followed by the month, day, hour, minute, and year all numeric and no spaces.
    date 041106232011
    hwclock –systohc
    ln -sf /usr/share/zoneinfo/ /etc/localtime
    vi /etc/sysconfig/clock (update timezone if redhat)
    service ntpd restart

    Check:
    hwclock –show
    date
    ls -l /etc/localtime

  25. Hi there,

    thank you very much for the info …. works like a charm !!!
    btw, once I set my system date and time correctly the use of the
    “#hwclock –systohc” command rules ´em all too !!!

    saludos!
    eriku

  26. To me, setting date and time in linux was really difficult and I was searching many documents / websites for this, and thank you very much for such comprehensive information for setting date and time. It helps me a lot.

  27. not a big deal , just type :

    #date 030613252012
    03=March
    06=Day
    13=Hour
    25=Min
    2012=Year

    That’s IT :)

  28. Hey guys i have tried each and every command to change my linux server time but after i try every command new time is displayed.But when i try to verify it by running date command it shows old time again.Plssss help me……..

    1. my friend this one is working fine nor more no less :

      [server#] date 030613252012

      it means :
      03=March
      06=Day
      13=Hour
      25=Min
      2012=Year

      That’s IT :)

  29. Thanks a lot for your help. But problem is there is no way to change the date if it is a VPS server :(

  30. There is no different between actual server and virtual server ; you can use same command to change the date :

    [VPS-server]# date 030613252012

    it means :
    03=March
    06=Day
    13=Hour
    25=Min
    2012=Year

  31. I really thank you so much because of my wordpress site display wrong date. After read this post, i’ve just changed it. Thanks so much again !

  32. I have a VCX Connect box, a V7005, that accepts some of the commands on this page to change the date however the date is not actually changed. I’ve ran the following to no avail:

    # DATE -S “22 NOV 2013 10:00:00”

    This in different variations.

    Might anyone know if there is another syntax associated with a 3com VCX box?

  33. have you tried the command that I have shared with you , and what was the output ?

    Please see the below sample :
    [Server#] date 030613252012

    it means :
    03=March
    06=Day
    13=Hour
    25=Min
    2012=Year

  34. Hi Sam

    I managed to change the time on our VCX Linux box by entering one different variations of the command below. Not sure of the exact syntax but it goes something like this:

    # DATE -SET “22 NOV 2013 10:00:00 PST″

    It took a short while for the change to reflect on the box and all phones. Short while meaning a few hours.

  35. Check , weather you are root user , or not .
    normal user , cant change date .

    date -s “YYYY-MM-DD HH:MM:SS”

      1. @Nix craft, its asking password but i don’t know the password and its impossible to know the password bcoz our system admin set its secretly

        [[email protected] ~]$ sudo date –set=”4 JAN 2014 9:35:00″
        [sudo] password for mphs:

        1. Try your own password. Also, you need to be root (sysadmin) or part of sysadmin group in /etc/sudoers to change system date. A normal user can not change system date or time due to security reasons.

  36. can also please run the below command :

    # python -c ‘import platform ; print platform.dist()[0]’

    and send the output here .

    Skype : mos3535

  37. please as I told you , try to change date by supper user like root user:

    # su –

    if it ask you for password , you should know root password
    if not , please create password for root like this :

    # passwd root

  38. when I use:

    date +%T -s “10:13:13″

    or

    date –set=”10:13:13” the time is reset to 00:00:00.

    Is there a solution to this?

  39. To do what ?
    use the command below to change back the date and time :

    # date -s “YYYY-MM-DD HH:MM:SS”

  40. Even though if i set the system time using the command “date -s ” ” when i restart it again showing the old time y? is it the problem of c-mos battery or is there any other command to set time .

    1. Hi Naraya,
      I would advice you to check the cmos, that is most likely the biggest problem.
      Before you sort that out; after setting the date using the command #date –set = “STRING”, remember to follow with the use of command # hwclock –systohc

  41. I am trying to change the time from EDT to PDT
    I have tried preety much everything still doent work.

    i have changed
    :[/etc/sysconfig]# ls -l /etc/localtime
    lrwxrwxrwx 1 root root 37 Oct 28 15:48 /etc/localtime -> /usr/share/zoneinfo/America/Vancouver
    i have updated /etc/sysconfig/clock with Vancouver
    but when i run service ntpd restart , i get
    Shutting down ntpd: [FAILED]
    Starting ntpd: [ OK ]

    —————————————————————
    still shows the Eastern time.. :(
    [/etc/sysconfig]# date
    Wed Oct 29 09:20:40 EDT 2014

  42. I was trying the same thing but then when you reboot the device /system the date will come back to previous state . So this is what u can try
    vi /etc /timezone
    and change the setting over there to IST+530 or just make it IST if the time is shown as + or – the current time

    Regards,
    R&R

Comments are closed.