如何在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