UNIX Date Command Examples

Posted on in Categories , , last updated August 31, 2013

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. 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:


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+.

26 comment

  1. @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?

  2. @Philippe,

    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
  3. @Vivek: Then, would you consider adding some warning/advice/comment to prevent your readers loosing time (and hairs ;-) ).

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

    1. 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

      1. 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.

        1. 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?

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

    date -d ‘1 hour ago”

    1. Hi vivek,

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


      1. 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’)

    2. 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 :)

    3. 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…

  6. 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 –[email protected]` which expects the epoc time (seconds since 1 jan 1970). Also nice are ‘yesterday’, ‘now’, ‘tomorrow’, ‘last friday’ and such.

  7. 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’)

    1. 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)

  8. 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 ?

  9. 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)

    1. @RunnySpoon.
      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.



    2. 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.

  10. Hi,
    I need to get time of 1 hour before. -d and -v options are not working. My requirement is to print current time and 1 hour before time. For current time and 1 hour before time I am using below

    TIME1=`date +”%T”`
    TIME2=`date +”%T”` – 1 * 60 * 60 * 1000

    TIME1 is giving the correct time but TIME2 is not working. Can anyone please respond?


  11. I have two variables and would like to find time diff in minutes. Pls help


Comments are closed.