bash date format

Subject:

ref: http://www.cyberciti.biz/faq/linux-unix-formatting-dates-for-display/

Syntax

The syntax is as follows for the GNU/date and BSD/date command:

date +FORMAT

OR

date +"%FORMAT"

OR

date +"%FORMAT%FORMAT"

OR

date +"%FORMAT-%FORMAT"

An operand with a leading plus (+) sign signals a user-defined format string which specifies the format in which to display the date and time. The following examples are tested on GNU/Linux, Apple OS X Unix, and FreeBSD unix operating system.

Task: Display date in mm-dd-yy format

Open a terminal and type the following date command:$ date +"%m-%d-%y"Sample outputs:

02-27-07

To 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 following command:$ date +"%T"Sample outputs:

19:55:04

To display locale’s 12-hour clock time, enter:$ date +"%r"Sample outputs:

07:56:05 PM

To display time in HH:MM format, type:$ date +"%H-%M"Sample outputs:

00-50

How do I save time/date format to the shell variable?

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

A sample shell script

#!/bin/bash NOW=$(date +"%m-%d-%Y") FILE="backup.$NOW.tar.gz" echo "Backing up data to /nas42/backup.$NOW.tar.gz file, please wait..." # rest of script # tar xcvf /nas42/backup.$NOW.tar.gz /home/ /etc/ /var

A complete list of FORMAT control characters supported by the GNU/date command

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

%FORMAT StringDescription

%%a literal %

%alocale’s abbreviated weekday name (e.g., Sun)

%Alocale’s full weekday name (e.g., Sunday)

%blocale’s abbreviated month name (e.g., Jan)

%Blocale’s full month name (e.g., January)

%clocale’s date and time (e.g., Thu Mar 3 23:05:25 2005)

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

%dday of month (e.g, 01)

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

%eday of month, space padded; same as %_d

%Ffull date; same as %Y-%m-%d

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

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

%hsame as %b

%Hhour (00..23)

%Ihour (01..12)

%jday of year (001..366)

%khour ( 0..23)

%lhour ( 1..12)

%mmonth (01..12)

%Mminute (00..59)

%na newline

%Nnanoseconds (000000000..999999999)

%plocale’s equivalent of either AM or PM; blank if not known

%Plike %p, but lower case

%rlocale’s 12-hour clock time (e.g., 11:11:04 PM)

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

%sseconds since 1970-01-01 00:00:00 UTC

%Ssecond (00..60)

%ta tab

%Ttime; same as %H:%M:%S

%uday of week (1..7); 1 is Monday

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

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

%wday of week (0..6); 0 is Sunday

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

%xlocale’s date representation (e.g., 12/31/99)

%Xlocale’s time representation (e.g., 23:13:48)

%ylast two digits of year (00..99)

%Yyear

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

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

%Zalphabetic time zone abbreviation (e.g., EDT)

A complete list of FORMAT control characters supported by the BSD/date command

The following works on Apple OS X, FreeBSD and BSD version of the date command:

%Ais replaced by national representation of the full weekday name.

%ais replaced by national representation of the abbreviated weekday name.

%Bis replaced by national representation of the full month name.

%bis replaced by national representation of the abbreviated month name.

%Cis replaced by (year / 100) as decimal number; single digits are preceded by a zero.

%cis replaced by national representation of time and date.

%Dis equivalent to “%m/%d/%y”.

%dis replaced by the day of the month as a decimal number (01-31).

%E* %O*POSIX locale extensions. The sequences %Ec %EC %Ex %EX %Ey %EY %Od %Oe %OH %OI %Om %OM %OS %Ou %OU %OV %Ow %OW %Oy are supposed to provide alternate representations.Additionally %OB implemented to represent alternative months names (used standalone, without day mentioned).

%eis replaced by the day of the month as a decimal number (1-31); single digits are preceded by a blank.

%Gis replaced by a year as a decimal number with century. This year is the one that contains the greater part of the week (Monday as the first day of the week).

%gis replaced by the same year as in “%G”, but as a decimal number without century (00-99).

%His replaced by the hour (24-hour clock) as a decimal number (00-23).

%hthe same as %b.

%Iis replaced by the hour (12-hour clock) as a decimal number (01-12).

%jis replaced by the day of the year as a decimal number (001-366).

%kis replaced by the hour (24-hour clock) as a decimal number (0-23); single digits are preceded by a blank.

%lis replaced by the hour (12-hour clock) as a decimal number (1-12); single digits are preceded by a blank.

%Mis replaced by the minute as a decimal number (00-59).

%mis replaced by the month as a decimal number (01-12).

%nis replaced by a newline.

%O*the same as %E*.

%pis replaced by national representation of either “ante meridiem” (a.m.) or “post meridiem” (p.m.) as appropriate.

%Ris equivalent to “%H:%M”.

%ris equivalent to “%I:%M:%S %p”.

%Sis replaced by the second as a decimal number (00-60).

%sis replaced by the number of seconds since the Epoch, UTC (see mktime(3)).

%Tis equivalent to “%H:%M:%S”.

%tis replaced by a tab.

%Uis replaced by the week number of the year (Sunday as the first day of the week) as a decimal number (00-53).

%uis replaced by the weekday (Monday as the first day of the week) as a decimal number (1-7).

%Vis replaced by the week number of the year (Monday as the first day of the week) as a decimal number (01-53). If the week containing January 1 has four or more days in the new year, then it is week 1; otherwise it is the last week of the previous year, and the next week is week 1.

%vis equivalent to “%e-%b-%Y”.

%Wis replaced by the week number of the year (Monday as the first day of the week) as a decimal number (00-53).

%wis replaced by the weekday (Sunday as the first day of the week) as a decimal number (0-6).

%Xis replaced by national representation of the time.

%xis replaced by national representation of the date.

%Yis replaced by the year with century as a decimal number.

%yis replaced by the year without century as a decimal number (00-99).

%Zis replaced by the time zone name.

%zis replaced by the time zone offset from UTC; a leading plus sign stands for east of UTC, a minus sign for west of UTC, hours and minutes follow with two digits each and no delimiter between them (common form for RFC 822 date headers).

%+is replaced by national representation of the date and time (the format is similar to that produced by date(1)).

%-*GNU libc extension. Do not do any padding when performing numerical outputs.

%_*GNU libc extension. Explicitly specify space for padding.

%0*GNU libc extension. Explicitly specify zero for padding.

%%is replaced by %.

2017-01-27 09:42:25gstlouis