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


当前回答

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

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

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

or

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

支持DST的解决方案:

通过操作时区可以将时钟调整几个小时。由于是夏时制,24小时前可以是今天也可以是前天。

你确定昨天是二三十小时前。哪一个?最近的一次不是今天。

echo -e "$(TZ=GMT+30 date +%Y-%m-%d)\n$(TZ=GMT+20 date +%Y-%m-%d)" | grep -v $(date +%Y-%m-%d) | tail -1

echo命令中使用的-e参数在bash中是必需的,但在ksh中无效。在ksh中,您可以使用相同的命令,不带-e标志。

当您的脚本将在不同的环境中使用时,您可以使用#!/bin/ksh或#!/bin/bash你也可以用换行符替换\n:

echo "$(TZ=GMT+30 date +%Y-%m-%d)
$(TZ=GMT+20 date +%Y-%m-%d)" | grep -v $(date +%Y-%m-%d) | tail -1

date --date='-1 day'

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

or

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