The date command can be used to print the current system’s date and time. It can also be used to print the date and time in custom format using the various options provided by it.

If a date command is used without any arguments, it prints the date and time in the following format which is default.

[neo@techpulp ~]# date
Sat Nov  8 11:10:48 IST 2008
[neo@techpulp ~]#

You can provide a custom format string to date command as command-line argument. The following example prints the date in “dd-mm-yyyy hh:mm” format.

[neo@techpulp ~]# date +"%d-%m-%Y %H:%M"
08-11-2008 11:13
[neo@techpulp ~]#

As shown in the above example, “date +FORMAT” can be used where FORMAT is a string with various options supported by date command.

The following are the format options supported by date command.

%%   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)

Let us try few examples to print date and time in various formats.

[neo@techpulp ~]# date +"%H:%M:%S"
11:18:21
[neo@techpulp ~]# date +"%b, %d %Y %H:%M:%S"
Nov, 08 2008 11:20:28
[neo@techpulp ~]# date +"%H:%M:%S %m-%d-%y"
11:22:36 11-08-08
[neo@techpulp ~]# date +"%b,%d %Y %I:%M:%S %p"
Nov,08 2008 11:24:10 AM
[neo@techpulp ~]# date +"%F"
2008-11-08
[neo@techpulp ~]# date +"%D"
11/08/08
[neo@techpulp ~]# date +"%T"
11:25:32
[neo@techpulp ~]# date +"%c"
Sat 08 Nov 2008 11:26:17 AM PST