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


当前回答

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

or

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

其他回答

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

如果你有BSD (OSX)日期,你可以这样做:

date -j -v-1d
Wed Dec 14 15:34:14 CET 2011

或者如果你想在任意日期上进行日期计算:

date -j -v-1d -f "%Y-%m-%d" "2011-09-01" "+%Y-%m-%d"
2011-08-31

简短回答(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格式了!

如果你有GNU日期,我理解正确

$ date +%Y:%m:%d -d "yesterday"
2009:11:09

or

$ date +%Y:%m:%d -d "1 day ago"
2009:11:09
date -d "yesterday" '+%Y-%m-%d'

or

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