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


当前回答

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

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

or

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

其他回答

也许改用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
yesterday=`date -d "-1 day" %F`

将昨天的日期(YYYY-MM-DD格式)放入变量$yesterday。

高级bash脚本编写指南

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

有关日期格式的详细信息,请参阅日期手册页

date --date='-1 day'

MAC OSX

昨天的日期:

date -v-1d +%F

其中1d定义今天减去1天。同样的,

date -v-1w +%F -表示前一周的日期

date -v-1m +%F -表示上个月的日期

如果你有gnu日期,

date --date="1 day ago"

更多信息:https://www.cyberciti.biz/tips/linux-unix-get-yesterdays-tomorrows-date.html

如果你有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