3

How can I subtract two dates in epoch format using Shell Scripting. I want the output in Months, Days, Hours format. Also It should work even for more than 12 months ( as I came across few which were resetting to 0 months if more than 12)

ajain
  • 51
  • 1
  • 1
  • 5

2 Answers2

5

Try something like this:

#!/bin/bash

d1=`date -d 20140929 +%s`
d2=`date -d 20001115 +%s`

date --date=@$(($d1 - $d2)) +'%m months, %d days, %H hours'

Output:

11 months, 15 days, 02 hours
A.P.
  • 1,416
  • 9
  • 11
0
#!/bin/bash

d=(60sec 60min 24hours 30days 12month 1000year)
i=0

while [ $1 -ge ${d[i]%%[a-z]*} ]
do
    set -- $(($1/${d[i]%%[a-z]*})) $(($1%${d[i]%%[a-z]*})) ${d[i]##*[0-9]} ${*:2}
    ((i++))
done 
echo $1 ${d[i]##*[0-9]} ${*:2}
Costas
  • 14,916