1.How to formatting date for display?
Problem
You need to format dates or time for output
Solution
Use the date command with a strftime format specification.
3. How to automating date Ranges?
Problem
You have one date and you would like to generate the other automatically.
Solution
[maxwell@DBAMAXWELL cp11]$ date '+%Y-%m-%d %H:%M%S %z'
2022-03-19 09:5725 +0800
[maxwell@DBAMAXWELL cp11]$ date -d 'today' '+%Y-%m-%d %H:%M%S %z'
2022-03-19 09:5750 +0800
[maxwell@DBAMAXWELL cp11]$ date -d 'yesterday' '+%Y-%m-%d %H:%M%S %z'
2022-03-18 09:5805 +0800
[maxwell@DBAMAXWELL cp11]$ date -d 'tomorrow' '+%Y-%m-%d %H:%M%S %z'
2022-03-20 09:5821 +0800
[maxwell@DBAMAXWELL cp11]$ date -d 'Monday' '+%Y-%m-%d %H:%M%S %z'
2022-03-21 00:0000 +0800
[maxwell@DBAMAXWELL cp11]$ date -d 'last Monday' '+%Y-%m-%d %H:%M%S %z'
2022-03-14 00:0000 +0800
[maxwell@DBAMAXWELL cp11]$ date -d 'next Monday' '+%Y-%m-%d %H:%M%S %z'
2022-03-21 00:0000 +0800
[maxwell@DBAMAXWELL cp11]$ date -d 'last week' '+%Y-%m-%d %H:%M%S %z'
2022-03-12 09:5943 +0800
[maxwell@DBAMAXWELL cp11]$ date -d 'next week' '+%Y-%m-%d %H:%M%S %z'
2022-03-26 09:5954 +0800
[maxwell@DBAMAXWELL cp11]$ date -d '2 week' '+%Y-%m-%d %H:%M%S %z'
2022-04-02 10:0005 +0800
[maxwell@DBAMAXWELL cp11]$ date -d '-2 weeks' '+%Y-%m-%d %H:%M%S %z'
2022-03-05 10:0025 +0800
[maxwell@DBAMAXWELL cp11]$ date -d '2 weeks' '+%Y-%m-%d %H:%M%S %z'
2022-04-02 10:0034 +0800
[maxwell@DBAMAXWELL cp11]$ date -d '2 weeks ago' '+%Y-%m-%d %H:%M%S %z'
2022-03-05 10:0054 +0800
[maxwell@DBAMAXWELL cp11]$ date -d '+4 days' '+%Y-%m-%d %H:%M%S %z'
2022-03-23 10:0121 +0800
[maxwell@DBAMAXWELL cp11]$ date -d '-6 days' '+%Y-%m-%d %H:%M%S %z'
2022-03-13 10:0135 +0800
[maxwell@DBAMAXWELL cp11]$ date -d '2000-01-01 +12 days' '+%Y-%m-%d %H:%M%S %z'
2000-01-13 00:0000 +0800
[maxwell@DBAMAXWELL cp11]$ date -d '3 months 1 day' '+%Y-%m-%d %H:%M%S %z'
2022-06-20 10:0248 +0800
[maxwell@DBAMAXWELL cp11]$ date '+%a %Y-%m-%d'
Sat 2022-03-19
[maxwell@DBAMAXWELL cp11]$ date -d 'today' '+%a %Y-%m-%d'
Sat 2022-03-19
[maxwell@DBAMAXWELL cp11]$ date -d 'Saturday' '+%a %Y-%m-%d'
Sat 2022-03-19
[maxwell@DBAMAXWELL cp11]$ date -d 'last Saturday' '+%a %Y-%m-%d'
Sat 2022-03-12
[maxwell@DBAMAXWELL cp11]$ date -d 'this Saturday' '+%a %Y-%m-%d'
Sat 2022-03-19
[maxwell@DBAMAXWELL cp11]$ date -d 'next Saturday' '+%a %Y-%m-%d'
Sat 2022-03-26
[maxwell@DBAMAXWELL cp11]$ date -d 'this week Friday' '+%a %Y-%m-%d'
Fri 2022-03-25
[maxwell@DBAMAXWELL cp11]$
3. How to converting Dates and Times to Epoch Seconds
[maxwell@DBAMAXWELL cp11]$ date '+%s'
1647657592
[maxwell@DBAMAXWELL cp11]$ date -d '2005-11-05 12:00:00 +0000' '+%s'
1131192000
[maxwell@DBAMAXWELL cp11]$ perl -e 'print time, qq(\n);'
1647657672
[maxwell@DBAMAXWELL cp11]$ perl -e 'use Time::Local; print timelocal(localtime( )) . qq(\n);'
1647657680
[maxwell@DBAMAXWELL cp11]$ perl -e 'use Time::Local; print timelocal(localtime( )) . qq(\n);'
1647657694
[maxwell@DBAMAXWELL cp11]$ perl -e 'use Time::Local; print timelocal("49", "59", "06", "05", "10", "105") .
> qq(\n);'
1131145189
[maxwell@DBAMAXWELL cp11]$ perl -e 'use Time::Local; print timegm("49", "59", "06", "05", "10", "105") . qq(\
> n);'
1131173989
n[maxwell@DBAMAXWELL cp11]$
3. How to converting Epoch Seconds to Dates and Times
n[maxwell@DBAMAXWELL cp11]$ EPOCH='1131173989'
[maxwell@DBAMAXWELL cp11]$ date -d "1970-01-01 UTC $EPOCH seconds" +"%Y-%m-%d %T %z"
2005-11-05 14:59:49 +0800
[maxwell@DBAMAXWELL cp11]$ date --utc --date "1970-01-01 $EPOCH seconds" +"%Y-%m-%d %T %z"
2005-11-05 06:59:49 +0000
[maxwell@DBAMAXWELL cp11]$
4.How to getting yesterday or tomorrow with Perl
[maxwell@DBAMAXWELL cp11]$ perl -e "use POSIX qw(strftime); print strftime('%Y-%m-%d', localtime(time -
> 86400)), qq(\n);"
2022-03-18
[maxwell@DBAMAXWELL cp11]$ perl -e "use POSIX qw(strftime); print strftime('%Y-%m-%d', localtime(time +
> 86400)), qq(\n);"
2022-03-20
[maxwell@DBAMAXWELL cp11]$