Date command is most essentially used in scripting for date wise backups and in other scenarios.
date +"%Y/%m/%d %H:%M"
is correct and
date +%Y/%m/%d %H:%M
is not.
Please note that if you date conversion template contains spaces you need to put it in single or double quotes
If you are OK with two year year representation you can use %y instead of %Y. There is also a macro %D that provides date in mm/dd/yy format, so we can rewrite the previous example as
date +"%D %H:%M"
Here are most important build-in macros:
%% a literal %
%a locale's abbreviated weekday name (Sun..Sat)
%A locale's full weekday name, variable length (Sunday..Saturday) %b locale's abbreviated month name (Jan..Dec)
%B locale's full month name, variable length (January..December)
%c locale's date and time (Sat Nov 04 12:02:33 EST 1989)
%d day of month (01..31)
%D date (mm/dd/yy)
%e day of month, blank padded ( 1..31)
%H hour (00..23)
%j day of year (001..366)
%m month (01..12)
%M minute (00..59)
%n a newline
%p locale's AM or PM
%r time, 12-hour (hh:mm:ss [AP]M)
%S second (00..60)
%t a horizontal tab
%T time, 24-hour (hh:mm:ss)
%U week number of year with Sunday as first day of week (00..53)
%V week number of year with Monday as first day of week (01..52)
%w day of week (0..6); 0 represents Sunday
%W week number of year with Monday as first day of week (00..53)
%x locale's date representation (mm/dd/yy)
%X locale's time representation (%H:%M:%S)
%y last two digits of year (00..99)
%Y -- ccyy year
Date also can work not with the current time, but with time of modification of the referenced file
date -r /etc/passwd +"%y%m%d"
It also can serve as data calculator.
Various options for past days (GNU date only):
date +"%Y%m%d" -d sunday # GNU date
20060709
date +"%Y%m%d" -d last-sunday # GNU date
20060702
date +"%Y%m%d" -d last-week # GNU date
date -v -1m +"%Y%m%d" # BSD date
20060627
date +"%Y%m%d" -d last-month # GNU date
date -v -1w +"%Y%m%d" # BSD date
20060604
date +"%Y%m%d" -d last-year # GNU date
date -v -1y +"%Y%m%d" # BSD date
20050704
date +"%Y%m%d" -d next-week # GNU date
date -v 1w +"%Y%m%d" # BSD date
20060711
date +"%Y%m%d" -d next-month # GNU date
date -v 1m +"%Y%m%d" # BSD date
20060804
date +"%Y%m%d" -d next-year # GNU date
date -v 1y +"%Y%m%d" # BSD date
20070704
To show the time in seconds since 1970-01-01 (Unix epoch):
date +"%s" -d "Fri Apr 24 13:14:39 CDT 2009"
1240596879
To convert Unix epoch time (seconds since 1970-01-01) to a human readable format:
date -d "UTC 1970-01-01 1240596879 secs"
Fri Apr 24 13:14:39 CDT 2009
Or:
date -ud @1000000000
Sun Sep 9 01:46:40 UTC 2001
Examples
date "+%-m/%-d/%y"
7/4/06
date "+%Y%m%d"
20060704
$ date +"%b %d, %Y"
Mar 14, 2010
date -d yesterday +"%Y/%m/%d"
2010/03/13
Yesterday assigned to variable
DATE=$(date -d yesterday +"%Y%m%d")
echo $DATE
20060704
To assign the time to a variable
START=`date '+%r'`
echo $START
03:06:02 PM
sleep 5
echo $START
03:06:02 PM
To show the time in a different timezone, the TZ environment variable is read, Timezone types is found in /usr/share/zoneinfo
OLDTZ=$TZ
export TZ=GMT; echo "GMT: `date +\"%F %R (%Z)\"`"
GMT: 2008-10-31 12:30 (GMT)
export TZ=Europe/Stockholm; echo "Stockholm: `date +\"%F %R (%Z)\"`"
Stockholm: 2008-10-31 13:30 (CET)
export TZ=Asia/Kuala_Lumpur; echo "Kuala Lumpur: `date +\"%F %R (%Z)\"`"
Kuala Lumpur: 2008-10-31 20:30 (MYT)
export TZ=US/Central; echo "Dallas: `date +\"%F %R (%Z)\"`"
Dallas: 2008-10-31 07:30 (CDT)
export TZ=$OLDTZ
Using date for offset calculation:
date +"%Y%m%d" -d sunday
20060709
date +"%Y%m%d" -d last-sunday
20060702
date +"%Y%m%d" -d last-week
20060627
date +"%Y%m%d" -d last-month
20060604
date +"%Y%m%d" -d last-year
20050704
date +"%Y%m%d" -d next-week
20060711
date +"%Y%m%d" -d next-month
20060804
date +"%Y%m%d" -d next-year
20070704
No comments:
Post a Comment