Sponsored Content
Top Forums Shell Programming and Scripting How to get tomorrow,yesterday date from date Command Post 302702829 by kshji on Wednesday 19th of September 2012 12:49:10 AM
Old 09-19-2012
Here is again. Both version, using some function, no 1970-01-01 limit and ksh93 builtin printf, which has 1970-01-01 limit.
Code:
#!/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.
Code:
# 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 ""


Last edited by kshji; 12-08-2012 at 04:19 AM..
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

yesterday date month/date

Hi expert, I want to retrieve yesterday su log. How to calculate and assign variable value ( 06/23 ) in myVariable ? #!/bin/sh myVariable=yesterday date in month/date cat /var/adm/sulog | grep $myVariable > file.txt many thanks! (5 Replies)
Discussion started by: skully
5 Replies

2. Shell Programming and Scripting

Compare date from db2 table to yesterday's Unix system date

I am currently running the following Korn shell script which works fine: #!/usr/bin/ksh count=`db2 -x "select count(*) from schema.tablename"` echo "count" I would like to add a "where" clause to the 2nd line that would allow me to get a record count of all the records from schema.tablename... (9 Replies)
Discussion started by: sasaliasim
9 Replies

3. UNIX for Dummies Questions & Answers

Date change to tomorrow

I have this code in a script that says it is calculating current date: cur_date=`date -u +%m/%d/%Y` If the script is run today during the day, it returns 12/11/2008 If the script is run today during the night, it returns 12/12/2008 Why does it return tomorrow's date if it was run at... (2 Replies)
Discussion started by: mkoay
2 Replies

4. Shell Programming and Scripting

grep tomorrow's date

Hi guys, I need to find tomorrows date in date fomat and should be in variable. as I need to grep this date in a flat file ie. if today's date is '09 JAN 2009' output should be '10 JAN 2009' unix/perl script will be fine. (21 Replies)
Discussion started by: ssachins
21 Replies

5. Shell Programming and Scripting

Need help in Shell Script comparing todays date with Yesterday date from Sysdate

Hi, I want to compare today's date(DDMMYYYY) with yesterday(DDMMYYYY) from system date,if (today month = yesterday month) then execute alter query else do nothing. The above requirement i want in Shell script(KSH)... Can any one please help me? Double post, continued here. (0 Replies)
Discussion started by: kumarmsk1331
0 Replies

6. UNIX for Dummies Questions & Answers

Move Command with Adding Yesterday date

How to move a file with mv command by adding yesteday's date(YYYYMMDD) at the end Example: /a/abc.txt should be moved to the same folder /a/abc_yyyymmdd.txt YYYYMMDD should be yesterday's date (2 Replies)
Discussion started by: eskay
2 Replies

7. Shell Programming and Scripting

[Solved] Replace yesterday date with today's date except from the first line

Hello, I have a file like this: 2012112920121130 12345620121130msABowwiqiq 34477420121129amABamauee e7748420121130ehABeheheei in case the content of the file has the date of yesterday within the lines containing pattern AB this should be replaced by the current date. But if I use... (3 Replies)
Discussion started by: Lilu_CK
3 Replies

8. Shell Programming and Scripting

Get yesterday date

Hi Friend, i am using OS HP-UX vvftf320 B.11.11 U 9000/800 511076331 unlimited-user license now i have used below command but it giving today's date. i need your help to get yesterdate. Please correct me. date +"%d%m%Y%H%M%S" -d "1 days ago Thanks in advance, Jewel (3 Replies)
Discussion started by: Jewel
3 Replies

9. Shell Programming and Scripting

How to append date to filename, but base it on yesterday's date?

Hello, I'd like to write a monthly archive script that archives some logs. But I'd like to do it based on yesterday's date. In other words, I'd like to schedule the script to run on the 1st day of each month, but have the archive filename include the previous month instead. Here's what I... (5 Replies)
Discussion started by: nbsparks
5 Replies

10. Shell Programming and Scripting

Shell script to compare two files of todays date and yesterday's date

hi all, How to compare two files whether they are same are not...? like i had my input files as 20141201_file.txt and 20141130_file2.txt how to compare the above files based on date .. like todays file and yesterdays file...? (4 Replies)
Discussion started by: hemanthsaikumar
4 Replies
DATE(1) 						      General Commands Manual							   DATE(1)

NAME
date - print or set the date and time SYNOPSIS
date [-qsu] [[MMDDYY]hhmm[ss]] [+format] OPTIONS
-q Read the date from stdin -s Set the time (implicit for -q or a date string) -u Print the date as GMT -t Use this number of seconds instead of current time EXAMPLES
date # Print the date and time date 0221921610 # Set date to Feb 21, 1992 at 4:10 p.m. DESCRIPTION
With the -q flag or a numeric argument, date sets the GMT time and date. MMDDYY refers to the month, day, and year; hhmmss refers to the hour, minute and second. Each of the six fields must be exactly two digits, no more and no less. date always display the date and time, with the default format for the system. The -u flag request GMT time instead of local time. A format may be specified with a + followed by a printf-like string with the following options: %% % character %A Name of the day %B Name of the month %D mm/dd/yy %H Decimal hour on 2 digits %I Decimal hour modulo 12 on 2 digits %M Decimal minute on 2 digits %S Decimal seconds on 2 digits %T HH:MM:SS %U Decimal week number, Sunday being first day of week %W Decimal week number, Monday being first day of week %X Same as %T %Y Decimal year on 4 digits %Z Time Zone (if any) %a Abbreviated name of the day %b Abbreviated name of the month %c Appropriate date & time (default format) %d Decimal day of the month on 2 digits %e Same as %d, but a space replaces leading 0 %h Same as %b %j Decimal dey of the year on 3 digits %m Decimal month on 2 digits %n Newline character %p AM or PM %r 12-hour clock time with AM/PM %s Number of seconds since the epoch %t Tab character %w Decimal day of the week (0=Sunday) %x Same as %D %y Decimal year on 2 digits SEE ALSO
time(2), ctime(3), readclock(8). DATE(1)
All times are GMT -4. The time now is 11:34 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy