I am trying to calculate the number of days between two dates like this:
$ echo $((($(date +%s -d 2016/11/22)-$(date +%s -d 2016/11/20))/(3600*24))) days 2 days
That is the expected answer and perfectly consistent with this:
$ date -d '2016/11/22 - 2 days' Sun Nov 20 00:00:00 CET 2016
However, these two seem to be inconsistent:
$ echo $((($(date +%s -d 2020/06/28)-$(date +%s -d 2016/11/20))/(3600*24))) days 1315 days $ date -d '2020/06/28 - 1315 days' Mon Nov 21 00:00:00 CET 2016
Am I missing something? Why don’t I get 1316 days (instead of 1315) in the third command I used?
I have done a few more tests changing the month in the date 2020/06/28. It seems that up to March I get the expected answer (i.e., I get Nov 20 in the fourth command), but from April on the inconsistency is present (i.e., I get Nov 21 in the fourth command). Any hints?
Go to Source