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とシェルスクリプトに非常に慣れていないので、これを行う簡単な方法があるかどうかわかりません。より良い方法がある場合は、私を助けてください。

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、小数日が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 に答える