About Linux FAQ

Browse More FAQs:

How to format date for display or to use in a shell script

Posted by Vivek on Tuesday February 27, 07 @3:07 pm

Q. How do I format date to display on screen on for my scripts as per my requirements?

A. You need to use standard date command to format date or time for output or to use in a shell script.

Syntax to specify format
date +FORMAT

Task: Display date in mm-dd-yy format

Type the command as follows:
$ date +"%m-%d-%y"
Output:

02-27-07

Turn on 4 digit year display:
$ date +"%m-%d-%Y"
Just display date as mm/dd/yy format:
$ date +"%D"

Task: Display time only

Type the command as follows:
$ date +"%T"
Output:

19:55:04

Display locale’s 12-hour clock time
$ date +"%r"
Output:

07:56:05 PM

Display time in HH:MM format:
$ date +"%H-%M"

How do I save time/date format to a variable?

Simply type command as follows at a shell prompt:
$ NOW=$(date +"%m-%d-%Y")
To display a variable use echo / printf command:
$ echo $NOW
Sample shell script:

#!/bin/bash
NOW=$(date +"%m-%d-%Y")
FILE="backup.$NOW.tar.gz"
# rest of script

Complete list of FORMAT control characters supported by date command

FORMAT controls the output.It can be the combination of any one of the following:


%%

a literal %
%a

locale's abbreviated weekday name (e.g., Sun)
%A

locale's full weekday name (e.g., Sunday)

%b

locale's abbreviated month name (e.g., Jan)
%B

locale's full month name (e.g., January)
%c

locale's date and time (e.g., Thu Mar 3 23:05:25 2005)
%C

century; like %Y, except omit last two digits (e.g., 21)
%d

day of month (e.g, 01)
%D

date; same as %m/%d/%y

%e

day of month, space padded; same as %_d
%F

full date; same as %Y-%m-%d
%g

last two digits of year of ISO week number (see %G)
%G

year of ISO week number (see %V); normally useful only with %V
%h

same as %b
%H

hour (00..23)

%I

hour (01..12)
%j

day of year (001..366)
%k

hour ( 0..23)
%l

hour ( 1..12)
%m

month (01..12)
%M

minute (00..59)

%n

a newline
%N

nanoseconds (000000000..999999999)
%p

locale's equivalent of either AM or PM; blank if not known
%P

like %p, but lower case
%r

locale's 12-hour clock time (e.g., 11:11:04 PM)
%R

24-hour hour and minute; same as %H:%M

%s

seconds since 1970-01-01 00:00:00 UTC
%S

second (00..60)
%t

a tab
%T

time; same as %H:%M:%S
%u

day of week (1..7); 1 is Monday
%U

week number of year, with Sunday as first day of week (00..53)

%V

ISO week number, with Monday as first day of week (01..53)
%w

day of week (0..6); 0 is Sunday
%W

week number of year, with Monday as first day of week (00..53)
%x

locale's date representation (e.g., 12/31/99)
%X

locale's time representation (e.g., 23:13:48)
%y

last two digits of year (00..99)

%Y

year
%z

+hhmm numeric timezone (e.g., -0400)
%:z

+hh:mm numeric timezone (e.g., -04:00)
%::z

+hh:mm:ss numeric time zone (e.g., -04:00:00)

%:::z

numeric time zone with : to necessary precision (e.g., -04, +05:30)
%Z

alphabetic time zone abbreviation (e.g., EDT)

See also:

Subscribe to our free e-mail newsletter or RSS feed to get all updates. You can Email this page to a friend.

Related Linux / UNIX FAQ:

Discussion on This FAQ

  1. Michael Shuler Says:

    An alternate that I use for several scripts is to eval $TIME and add useful text - uses similar format statements as date - see the manpage.

    $ for node in $( cat nodes ) ; do env TIME=”$node elapsed time: %E” time rsync -az data $node: ; done
    alpha.nyc elapsed time: 0:30.82
    beta.lax elapsed time: 1:01.81
    gamma.lon elapsed time: 2:39.64
    $

  2. noel villeroz Says:

    It’s great and I learned a lot from this topic…

  3. neo424 Says:

    I need to send my analog hits to my email box automatically.

    This is my command set,

    cd /home/cpanelaccount/tmp/analog
    ls -al
    grep id=55 4.html | wc -l | mail -s “csppg hits” my@emailc.om

    analog create log files 1-12.htm. ex: 4.html for April. After year it replace these files.

    How do I determent the month and make my commands automatic send information using cronjob?

  4. unique Says:

    how can get week of the month?..
    ex : 1102 (second week in the november)

  5. vij Says:

    how do i comapre time in 07:35:15AM format through shell script

Leave a Reply

We encourage your comments, and suggestions. But please stay on topic, be polite, and avoid spam. Please do not use the comment form to ask for help / question. Ask your question on the excellent Linux tech support forum. Thank you very much for stopping by our site!

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word

~ Last updated on: February 27, 2007

Copyright © 2006-2008 nixCraft. All rights reserved - TOS/Disclaimer - Privacy policy - Sitemap - Powered by Open source software.