Thursday, May 7, 2009

Date Command - Display Yesterday Date

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