好的,我所处的情况是,我想弄清楚到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脚本非常陌生,所以如果有更好的方法可以帮助我。
答案 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