How to get tomorrow,yesterday date from date Command

Hi

I want to get tomorrow and yesterday date from date command. My shell is KSH and server is AIX. I tried several options, but unable to do. Please help on this.

Regards
Rajesh

Check out the script here:
http://www.unix.com/unix-dummies-questions-answers/4870-days-elapsed-between-2-dates.html\#post16559

Here is again. Both version, using some function, no 1970-01-01 limit and ksh93 builtin printf, which has 1970-01-01 limit.

#!/usr/sh
#datecalc
#bash, ksh, ...
#########################################################################
Date2Jul()
{
        oifs="$IFS"
        IFS="-"
        array=($1) # date component to the array
        IFS="$oifs"
        dd=${array[2]}
        mm=${array[1]}
        yyyy=${array[0]}
        ((a= (14-mm)/12 ))
        ((y= yyyy+4800 - a ))
        ((m= mm + 12*a -3 ))
        ((jd= dd + (153*m+2)/5 + 365*y + y/4 - 32083 ))
        echo $jd
}

#########################################################################
Julian2Date()
{
# julian to the datestrt
# return string:
#   julian d m y dayOfWeek yyyymmdd
        Xjd="$1"
        Xb=0
        (( Xc=Xjd+32082))
        (( Xd= (4*Xc+3)/1461 ))
        (( Xe= Xc-((1461*Xd)/4)  ))
        (( Xm= (5*Xe+2)/153 ))
        (( Xday= Xe - (153*Xm+2)/5 + 1 ))
        (( Xmonth= Xm + 3 - 12*(Xm/10) ))
        (( Xyear= 100*Xb + Xd - 4800 + Xm/10 ))
        Xdstr="$Xday"
        Xmstr="$Xmonth"
        [ "$Xday" -lt 10 ] && Xdstr="0$Xdstr"
        [ "$Xmonth" -lt 10 ] && Xmstr="0$Xmstr"
        Xjulstr="$Xyear$Xmstr$Xdstr"


        ((Xa= (14-Xmonth)/12 ))
        ((Xy= Xyear - Xa ))
        ((Xm= Xmonth + 12*Xa - 2 ))
        ((Xweekday=  (6 + Xday + Xy + Xy/4 + (31*Xm)/12 ) % 7  ))
        ((Xday<10)) && Xday="0$Xday"
        ((Xmonth<10)) && Xmonth="0$Xmonth"
        echo "$Xjd $Xdstr $Xmstr $Xyear $Xweekday $Xjulstr"
}
###################### MAIN ##################################################
# using almost any days using Date2Jul and Julian2Date, also times before 1.1.1970
# yyyy-mm-dd
[ $# -lt 1 ] && echo "usage:$0 yyyy-dd-mm" >&2  && exit 1

datestr="$1"

julian=$(Date2Jul "$datestr")
Julian2Date "$julian" | read julian2 d m y dayOfWeek yyyymmdd
echo "$julian: $d.$m.$y "
echo "weekday (mon=1):$dayOfWeek"
echo "yyyymmdd: $yyyymmdd"
((tomorrow=julian+1))
Julian2Date "$tomorrow" | read julian2 d m y dayOfWeek yyyymmdd
echo "tomorrow $tomorrow: $d.$m.$y "

Or ksh93 printf version with 1970-01-01 limit.

# http://www2.research.att.com/~gsf/cgi-bin/download.cgi?action=list&name=ksh
# sec since 1970-01-01

[ $# -lt 1 ] && echo "usage:$0 yyyy-dd-mm" >&2  && exit 1

datestr="$1"

# some ex. how to convert date string to the epoc
epoc=$(printf "%(%s)T" now)
epoc=$(printf "%(%s)T" "2010-10-24")
epoc=$(printf "%(%s)T" "2010-10-24 00:00:00")
epoc=$(printf "%(%s)T" "10/24/2010 00:00:00")
epoc=$(printf "%(%s)T" "$datestr" )
echo "sec since 1970-01-01 00:00 UTC: $epoc"
# one day is 86400 sec = (60*60*24)
((day=60*60*24))

# now you can calculate and after that convert back to date string
((yesterday=epoc-day))
printf "%(%Y-%m-%d)T" "#$yesterday"
echo ""

try this

Getting Date In the Future
To get tomorrow and day after tomorrow (tomorrow+N) use day word to get date in the future as follows:

 
date --date='tomorrow'
date --date='1 day'
date --date='10 day'
date --date='10 week'
date --date='10 month'
date --date='10 year'
date --date='tomorrow'

To get yesterday and earlier day in the past use string day ago:

 
date --date='yesterday'
date --date='1 day ago'
date --date='10 day ago'
date --date='10 week ago'
date --date='10 month ago'
date --date='10 year ago'

---------- Post updated at 11:32 AM ---------- Previous update was at 11:29 AM ----------

or u can even try this for

tomorrow

DATE_STAMP=`TZ=CST+24 date +%m/%d/%Y` 

yesday

DATE_STAMP=`TZ=CST-24 date +%m/%d/%Y`

1 Like

Tomorrow:

perl -MPOSIX -e 'print strftime ("%Y-%m-%d", localtime(strftime ("%s", localtime) + 86400))'

Yesterday:

perl -MPOSIX -e 'print strftime ("%Y-%m-%d", localtime(strftime ("%s", localtime) - 86400))'

Hi Zozoo,
i tried that time zone thing but IST+24 gives me the yesterday date and IST-24 gives me the tommorow's date.. i dono wats wrong with that