弄清楚Linux中剩余的时间

时间:2012-07-06 13:59:57

标签: linux shell unix

好的,我所处的情况是,我想弄清楚到2013年5月15日这个特定日期还剩下多少天。日期并不重要,但想法是弄清楚数量到达那天之前剩下的几天。

我想过做这样的事情(伪代码):

y=$end_year-$cur_year

if [ y -ge 1 ]; then
   days=$y*365
else
     continue
fi

if [ $end_month -gt $cur_month ]; then
     m=$end_month-$cur_month
else
     contine
fi

if [ $end_day -gt $cur_day ]; then
    d=$end_day-$cur_day
else
    continue
fi

result=$days+$m+$d

现在我不知道是否有更简单的方法可以做到这一点,因为我对Linux和shell脚本非常陌生,所以如果有更好的方法可以帮助我。

2 个答案:

答案 0 :(得分:5)

这个根据unix时间戳的差异来计算:

date
Fri Jul  6 15:04:04 BST 2012
echo $(( (`date -d "May 15, 2013" +'%s'` - `date +'%s'`) / (60*60*24) ))
312

分区已被覆盖,因此如果分数日计为一整天,则必须添加1

答案 1 :(得分:1)

[06 Jul 2012 18:13:47] rush@home  ~
$ DIFF=$(( $(date -d '05/15/2013 00:00' +%s) - $(date +%s) )) ; \
  echo $(( DIFF / (3600*24) )) days $(( DIFF % (3600*24) / 3600 )) \
  hours $(( DIFF % 3600 / 60 )) minutes $(( DIFF % 60 )) seconds left
312 days 5 hours 46 minutes 13 seconds left