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
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`
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