How to find yesterday’s or tomorrow’s date using shell?
There are couple of different ways to perform this task using shell date command depending on used OS. I will concentrate on Ubuntu Linux, OpenBSD and FreeBSD.
Ubuntu Linux
Ubuntu Linux offers -d switch to find the answer.
$ date --version date (GNU coreutils) 8.5 ...
Current date:
$ date Thu Dec 15 21:37:53 CET 2011
Calculate yesterday’s date:
$ date -d "yesterday" Wed Dec 14 21:38:02 CET 2011 $ date -d "last day" Wed Dec 14 21:38:03 CET 2011 $ date -d "-1 day" Wed Dec 14 21:38:05 CET 2011
Calculate tomorrow’s date:
$ date -d "tomorrow" Fri Dec 16 21:39:20 CET 2011 $ date -d "next day" Fri Dec 16 21:39:22 CET 2011 $ date -d "+1 day" Fri Dec 16 21:39:25 CET 2011
OpenBSD
Using OpenBSD this task needs to be performed in different way as there is no equivalent switch.
Current date:
$ date Thu Dec 15 22:15:07 CET 2011
Calculate yesterday’s date:
$ date -r `expr $(date +%s) - 86400` Wed Dec 14 22:15:09 CET 2011
Calculate tomorrow’s date:
$ date -r `expr $(date +%s) + 86400` Fri Dec 16 22:15:11 CET 2011
FreeBSD
FreeBSD offers handy -v switch to perform this task.
Current date:
$ date Thu Dec 15 22:18:14 CET 2011
Calculate yesterday’s date:
$ date -v-1d Wed Dec 14 22:18:18 CET 2011
Calculate tomorrow’s date:
$ date -v+1d Fri Dec 16 22:18:22 CET 2011