The GNU version of date(1) has a nice flag –date. It’s very easy to format dates in the past or future:
$ date +%d-%m-%Y 04-05-2006 $ date --date yesterday +%d-%m-%Y 03-05-2006 $ date --date "-6 months" +%d-%m-%Y 04-11-2005
The Solaris version of date(1) has no such nice flags. So, how to print another date?
Direct in a shell:
$ YESTERDAY=`TZ=GMT+24 date +%d-%m-%Y`; echo $YESTERDAY 03-05-2006 $ YESTERDAY=`TZ=GMT-48 date +%d-%m-%Y`; echo $YESTERDAY 06-05-2006
But, in this case, we are limited to a few days in the past or future. Another solution is Perl:
$ perl -e 'use POSIX qw(strftime); print strftime "%a %b %e %H:%M:%S %Y",\ localtime(time()- 3600*24*2);' Tue May 2 14:59:41 2006