I started working at my current position since November 17th 2014. I would like to know how many days have run up to now. Any ideas on how to use Linux to come up with a simple and nice solution?
Asked
Active
Viewed 4,378 times
11
4 Answers
15
echo $(( (`date +%s` - `date +%s -d '2014/11/17'`) / 86400 )) days ago

wurtel
- 16,115
-
5This gets leap seconds wrong. I mean, that hardly matters now, but in 10k years or so the accumulated error could be enough to matter. – Kevin Jul 14 '15 at 19:07
-
2The probability leap seconds will trigger an error in about .000001%. This is negligible compared to the wrong number of days this method will give with locales where daylight saving time is observed: 2% of the cases ... – jlliagre Jul 14 '15 at 21:04
-
2@Kevin: If he wants to know how many days he worked somewhere, we can (until further advance in cryogenisation or medicine) not bother too much about this ^^ – Olivier Dulac Jul 15 '15 at 00:37
-
1
-
@Kevin the fact
date +%s
works in UTC doesn't change at all the fact the result will be sometimes incorrect in location where DST is in use. "The number of days since X" is timezone dependent, one cannot ignore that fact with pretending to be in UTC. – jlliagre Jul 15 '15 at 06:42 -
1Chances are he will be wondering about the number of days employed while idling behind his desk at work. As that's probably not around midnight but somewhere between 8am and 5pm (and
date -d 2014/11/17
gives a timestamp of midnight as there's no time mentioned) DST doesn't matter. – wurtel Jul 15 '15 at 07:32
5
Well, on the face of it:
$ date --date="-239 days"
Mon Nov 17 15:25:40 CET 2014
In a script (not very efficient, but... maybe it handles leap seconds? ;) )
i=0
result=""
while [ "$result" != "20141117" ]
do
i=$((i+1))
result=$(date --date="-$i days" +%Y%m%d)
done
echo "$i" days have passed since "$result"

frostschutz
- 48,978
-
-
1@DigitalTrauma too bad it's not localized. E.g.
LC_ALL=ru_RU.utf8 date --date="239 дней назад"
gives me the same result asdate --date="239"
. – Ruslan Jul 15 '15 at 04:31 -
1
I tried python on the command line.
$ python -c "import datetime; print datetime.date.today() - datetime.date(2014,11,17)"
246 days, 0:00:00

ychaouche
- 998
1
Here is example with PHP:
<?php
$o1 = date_create('2014-11-17');
$o2 = date_create();
$o3 = date_diff($o2, $o1);
echo 'days: ', $o3->days, "\n";
Result:
days: 1927

Zombo
- 1
- 5
- 44
- 63
dateutil
. – Reid Jul 14 '15 at 16:16