我想显示当天1天前的日期

时间:2014-12-10 14:32:10

标签: shell

每次启动我的应用程序都需要sysdate-2 date。我为此创建了shell脚本。但在月结束时我面临着这个问题。它没有正确更新。

我的剧本

a1=`date +%d`
a1=`expr $a1 - 2`
b1=`date +%m-%Y`
rm LastTopupDate.txt
echo $a1-$b1 >> Date.txt

帮助我解决这个问题。?

2 个答案:

答案 0 :(得分:1)

假设GNU date,您可以使用

a1=$(date +%s)
b1=$(date +%m-%Y --date @$((a1-2*86400)))

其他实现的语法可能不同,但同样的想法适用:a1是表示为UNIX时间戳的日期(自固定时期以来的秒数),b1是日期发生在2天(一天86,400秒)之前。

GNU date还提供了更好的快捷方式:

b1=$(date +%m-%Y --date '2 days ago')

答案 1 :(得分:0)

回答关于昨天约会的标题问题,这里应该适用于不提供GNU日期的系统:

h=$(date +%H)
today=$(date +%d)

for i in -12 -6 +0 +6 +12; do
        gmth=$(TZ=UTC$i date +%H)
        gmttoday=$(TZ=UTC$i date +%d)
        if [ $gmttoday == $today ] && [ $gmth -gt 4 ]; then
                TZ=UTC$((i+24)) date +%d-%m-%Y
                break
        fi
done