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


当前回答

date --date='-1 day'

其他回答

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

试试下面的代码,它也处理DST部分。

if [ $(date +%w) -eq $(date -u +%w) ]; then
  tz=$(( 10#$gmthour - 10#$localhour ))
else
  tz=$(( 24 - 10#$gmthour + 10#$localhour ))
fi
echo $tz
myTime=`TZ=GMT+$tz date +'%Y%m%d'`

何赛义工

如果选择的日期格式是'YYYYMM',你可以用正则表达式做一个简单的计算:

echo $(($(date +"%Y%m") - 1)) | sed -e 's/99$/12/'

2020年1月,它将返回2011912;-) 但是,这只是一个变通方法,当date没有计算选项和其他日期解释器选项(例如使用perl)不可用时;-)

#!/bin/bash
OFFSET=1;
eval `date "+day=%d; month=%m; year=%Y"`
# Subtract offset from day, if it goes below one use 'cal'
# to determine the number of days in the previous month.
day=`expr $day - $OFFSET`
if [ $day -le 0 ] ;then
month=`expr $month - 1`
if [ $month -eq 0 ] ;then
year=`expr $year - 1`
month=12
fi
set `cal $month $year`
xday=${$#}
day=`expr $xday + $day`
fi
echo $year-$month-$day