2

好的,所以我所处的情况是我想确切地计算出距离特定日期(例如 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 脚本非常陌生,所以如果有更好的方法,请帮助我。

4

2 回答 2

6

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

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

除法是固定的,因此1如果一小部分天算作一整天,则必须添加 。

于 2012-07-06T14:07:53.567 回答
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
于 2012-07-06T14:13:05.117 回答