如何在Bash中打印当前时间前一天的日期?


当前回答

date +%Y:%m:%d|awk -vFS=":" -vOFS=":" '{$3=$3-1;print}'
2009:11:9

其他回答

date --date='-1 day'

不是很性感,但可以胜任:

perl -e 'my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time - 86400);$year += 1900; $mon+= 1; printf ("YESTERDAY: %04d%02d%02d \n", $year, $mon, $mday)'

由“马丁·克莱顿”的答案形成。

也许改用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

简短回答(GNU格式):

date +%Y-%m-%d -d "-2 day"

如果你正在使用OSX,但你需要创建GNU兼容,首先安装coreutils

brew install coreutils

然后编辑您的个人资料:

#gnu coreutils first
export PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"

重新启动你的终端,现在你就可以使用GNU格式了!

date -d "yesterday" '+%Y-%m-%d'

or

date=$(date -d "yesterday" '+%Y-%m-%d')
echo $date