如何在Bash中打印当前时间前一天的日期?
当前回答
高级bash脚本编写指南
date +%Y:%m:%d -d "yesterday"
有关日期格式的详细信息,请参阅日期手册页
date --date='-1 day'
其他回答
如果你有GNU日期,我理解正确
$ date +%Y:%m:%d -d "yesterday"
2009:11:09
or
$ date +%Y:%m:%d -d "1 day ago"
2009:11:09
高级bash脚本编写指南
date +%Y:%m:%d -d "yesterday"
有关日期格式的详细信息,请参阅日期手册页
date --date='-1 day'
date --date='-1 day'
也许改用Perl ?
perl -e 'print scalar localtime( time - 86400 ) . "\n";'
或者使用nawk, (ab)使用/usr/bin/adb:
nawk 'BEGIN{printf "0t%d=Y\n", srand()-86400}' | adb
我也发现了这个…疯了!
/usr/bin/truss /usr/bin/date 2>&1 | nawk -F= '/^time\(\)/ {gsub(/ /,"",$2);printf "0t%d=Y\n", $2-86400}' | adb
如果选择的日期格式是'YYYYMM',你可以用正则表达式做一个简单的计算:
echo $(($(date +"%Y%m") - 1)) | sed -e 's/99$/12/'
2020年1月,它将返回2011912;-) 但是,这只是一个变通方法,当date没有计算选项和其他日期解释器选项(例如使用perl)不可用时;-)