≡ Menu

UNIX Date Command Examples

How do I view and set date under UNIX operating systems? How do I see the current time/date on Unix based server?

The date command under UNIX displays date and time. You can use the same command set date and time. You must be the super-user (root) to change the date and time on Unix like operating systems.
Tutorial details
DifficultyEasy (rss)
Root privilegesYes
Estimated completion time5m
The date command shows the date and time read from the kernel clock.

UNIX Date Command Syntax

The syntax is:

date "+format"

Task: Display Current Date and Time

Type the following command:


Sample outputs:

Tue Oct 27 15:35:08 CDT 2009

When executed without arguments, the date command shows the current date and time.

Task: Set The Current Time

To set the current time to 05:30:30, enter:

date 0530.30

Task: Set Date

Set the date to Oct 25, 12:45 a.m., enter:

date 10250045

Another example - set the current date and time to Oct 15, 2009 04:30 you type:

date --set="20091015 04:30"

Task: Generating Output

WARNING! These examples may not work on Linux computer running GNU/coreutiles date command. All examples are tested on HP-UX, AIX, Sun Solaris and other proprietary UNIX operating systems only.

Type the following command:

date '+DATE: %m/%d/%y%nTIME:%H:%M:%S'

Sample outputs:

DATE: 10/27/09

Try the following examples:

date "+%m/%d/%y"
date "+%Y%m%d"
date +'%-4.4h %2.1d %H:%M'

Unix Command Help

Type the following command to read the date command man page:

man date
Tweet itFacebook itGoogle+ itPDF itFound an error/typo on this page?

{ 24 comments… add one }

  • Philippe Petrinko March 15, 2010, 4:32 pm

    @Vivek – Do you confirm this one ? My date ((GNU coreutils) 6.10) does not like it much.

    date +'%-4.4h %2.1d %H:%M'

    What does it do on your system?

  • nixCraft March 15, 2010, 6:15 pm


    I think I used that one on proprietary AIX or may be on HP-UX UNIX box. The month field is four characters long, left side. Same goes for the day (2 chars long). It will not work on *GNU coreutils*. You can try them on HP-UX or AIX and should provide output as follows:

    mmmm    dd HH:MM
  • Philippe Petrinko March 15, 2010, 6:19 pm

    @Vivek: Then, would you consider adding some warning/advice/comment to prevent your readers loosing time (and hairs ;-) ).

  • nixCraft March 15, 2010, 6:44 pm

    Title does says “UNIX Date Command Examples” and Linux != UNIX. Nevertheless, your suggestion is accepted :). Thanks!

  • priyanka July 5, 2011, 10:25 am

    very nice contain in this site……….useful very much in study…………..

  • learner July 13, 2011, 11:04 pm

    will date –version work in linux? why is the output different that echo “–version” | date

    • Philippe Petrinko July 14, 2011, 2:20 pm

      Hi Learner,

      Right way to give parameters on command line is:

      date –version

      When you want a program to use some input from a pipe is:

      echo “some text used as input” | tr “[[:lower:]]” “[[:upper:]]”

      But these are two really different functionalities. They are not equivalent at all, so they cannot yield the same.

      — Philippe

      • Learner July 14, 2011, 2:24 pm

        Consider – echo “–version” | date
        here echo “–version” will give the output –version , which will act as an input to date. .
        so we should get date –version.

        But we do not get the same output from echo “–version” | date
        and date –version. Can you please explain why the output is different.

        • Philippe Petrinko July 14, 2011, 3:53 pm

          You confuse [standard input usage] with [parameters on the command line] which are different kind of inputs, which cannot be exchanged.

          The genuine way to give parameters to a command is to give them on the program call, which is made on the command line.

          There a other ways to achieve parameter passing to a command, such as using a specific file, or using environment variables.

          On the other hand, standard input is commonly used to give _data_ to process, not parameters.

          As a matter of facts, [date] command does make any use of standard input.
          So you can pipe _anything_ you want, [date] won’t ever use it. You might have pipe (with echo) any text, [date] won’t use it.

          Make sure by Reading The Fantastic Manual,
          by issuing the command: man date

          Do you think you get the point?

  • amsurre February 22, 2012, 1:14 pm

    How to overcome missing -d option (present on gnu date – linux) on unix based OS ..

    date -d ‘1 hour ago”

    • Philippe Petrinko February 22, 2012, 9:49 pm

      Hi vivek,

      Typo here: “other propitiatory UNIX operating systems only”
      “propitiatory” should be: “proprietary”


      • nixCraft February 23, 2012, 6:25 am

        Thanks for the heads up!!!

      • bharath January 16, 2013, 10:50 am

        I am using these 2 commands in my unix shell sxript. when i do subtract , and if current month is jan, the jan -1 month should give me dec 2012, but getting it wrong. can you correct me?

        mydate=`date +%Y-%m-%d`
        mydate1=`date +%Y`’-0′$((`date +%m`-1))’-‘`date +%d`

        OrderedDate BETWEEN
        DATE(‘$mydate1 HKT’) AND
        DATE(‘$mydate HKT’)

    • nixCraft February 23, 2012, 6:25 am

      GNU has more advantages over the traditional Unix date command. Try:


      Try TZ to get y’day and tomorrow:

      TZ=IST24 date   # y'day
      TZ=IST-24 date # tomorrow


      • IST is my timezone and 24 is offset.

      Write a perl / shell / python script to calculate date :)

    • CBee January 16, 2013, 10:51 am

      Since about 15 years, if Ineed to maintain multiple unix variants (sun/solaris, hp-ux etc), I most frequently find myself installing the gnu tools and using them. They are available for all unix system that come with a c-compiler…

  • C. Beerse April 4, 2012, 9:32 pm

    Nice page on unix date command. Actually I was looking for the formats to be used by the –set=”” and/or –date=”” options as available on cygwin and/or linux.

    Reason: I intend to use `date -date=”input date spec” “+%Y%m%d%H%M%S”` to translate date specifications to the format I like/need.

    I already found `date –date=@12345678` which expects the epoc time (seconds since 1 jan 1970). Also nice are ‘yesterday’, ‘now’, ‘tomorrow’, ‘last friday’ and such.

  • myName August 30, 2012, 11:15 am


  • bharath January 16, 2013, 9:49 am

    I am using these 2 commands in my unix shell sxript. when i do subtract , and if current month is jan, the jan -1 month should give me dec 2012, but getting it wrong. can you correct me?

    mydate=`date +%Y-%m-%d`
    mydate1=`date +%Y`’-0’$((`date +%m`-1))’-‘`date +%d`

    OrderedDate BETWEEN
    DATE(‘$mydate1 HKT’) AND
    DATE(‘$mydate HKT’)

    • CBee January 16, 2013, 11:05 am

      You are twiggling with the output using text in the output string. Keep in mind, the main purpose of the command `date` is to fetch the epoc (seconds since 00:00gmt, 1 jan 1970) and to translate that to the human readable version in the current timezone.

      With that, most date commands can use different input to be used in stead of the current epoc. gun date (gnu tools, linux, cygwin etc.) does have a -d option to use an alternate date. There you can use `date -d lastmonth` to get the date from a month ago. On others you might only be able to use an alternate epoc. Then you can use (up to a limit) the current epoc minus the number of seconds in a month. To make your script easy, best use 4 or 5 weeks for this (5 * 24 * 60 * 60)

  • Shree Duth Awasthi June 28, 2013, 5:34 pm

    I have two requirements, I want to modify the system time by (a)1 sec (b) More than 1000 sec and observe some behaviour.

    Can you please suggest in unix shell scripts ?

  • RunnySpoon August 30, 2013, 3:40 pm

    Hey, I realise that this is quite an old topic, but hopefully you’re still watching it …

    I am trying to write a cp command and pipe in the current date/time into the target filename. Something along the lines of:
    cp sourcefile.txt sourcefile_20130830113025.txt

    Is this possible in a single cp command?

    I realise that I can format the date using date “+%Y%m%d%H%M%S”, I just can’t figure out how to get that in the middle of my filename. I’m sure it’s probably really simple and I just haven’t had enough coffee yet.
    (Solaris 5.10)

    • Philippe Petrinko August 31, 2013, 8:10 am

      Hey to you also.

      I hope you finally put a hand on a coffee mug. I’ll welcome you visiting me for a coffee, too. In the meantime, I give you this:

      All you need is “Command substitution”:
      Take a look at [ http://bash.cyberciti.biz/guide/Command_substitution ]

      Try to do it yourself, and come back to us with your work to share it back, we’ll appreciate that – and we’ll give you a hint if you need.



    • cbeerse August 31, 2013, 4:19 pm

      To use the output of 1 command on the commandline of an other one, you need to use teh “ quotes. (back quotes, on an US keyboard most likely found left to the key with 1 and !).

      If the current date is given with the next command:

      date "+%Y%m%d%H%M%S"

      your copy command is:

      cp sourcefile.txt sourcefile_`date "+%Y%m%d%H%M%S"`.txt

      Or in a loop:

      for f in *.txt
          cp $f `basename $f .txt`_`date "+%Y%m%d%H%M%S"`.txt

      Last edited by admin; 1st September 2013 at 01:06 AM. Reason: Code formatting.

  • RunnySpoon September 3, 2013, 1:37 pm

    Many thanks to Phillipe and cbeerse, that worked a treat.

Leave a Comment