Option 1:
#! /usr/bin/ksh
#
# Description:
# Get yesterday's date in YYYY-MM-DD format.
# With argument N in range 1..28 gets date N days before.
#
#
OFFSET=${1:-1}
case $OFFSET in
*[!0-9]* ???* 3? 29) print -u2 "Invalid input" ; exit 1;;
esac
eval `date "+day=%d; month=%m; year=%Y`
typeset -Z2 day month
typeset -Z4 year
# Subtract offset from day, if it goes below one use 'cal'
# to determine the number of days in the previous month.
day=$((day - OFFSET))
if (( day <= 0 )) ;then
month=$((month - 1))
if (( month == 0 )) ;then
year=$((year - 1))
month=12
fi
set -A days `cal $month $year`
xday=${days[$(( ${#days[*]}-1 ))]}
day=$((xday + day))
fi
print $year-$month-$day
print $month/$day/${year#??}
--------------------------------------------------------------------------------------------
Option 2:
datestamp=`date '+%Y%m%d'`
yest=$((datestamp -1))
print $yest
--------------------------------------------------------------------------------------------
To show current date:
$ echo `/usr/bin/date '+%Y%m%d'`
20090508
$ echo `date +"%d-%m-%Y %R"`
08-05-2009 11:08
$ echo `/usr/bin/date '+%Y%m%d%H%M'`
200905081148