Adding days to date


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Adding days to date
# 1  
Old 04-22-2016
Adding days to date

Hi, please can somebody let me know the easiest way to add days to a date.

I can do this in perl but would like to able to do it in a shell script.

Desired output would be:

date +'%Y-%m-%d' + 10 = 2016-05-02

Thank you

Last edited by RudiC; 04-22-2016 at 04:53 AM.. Reason: code tags?
# 2  
Old 04-22-2016
Did you consider searching these fora or take a look at the links to (more or less) ready made solutions at the bottom of this page?
# 3  
Old 04-22-2016
Thank you Rudi, yes i was aware of the posts.

Unfortunately i dont have gnu date so cant use date -d. Is the shiftdate script the only way this can be done?
# 4  
Old 04-22-2016
Quote:
Originally Posted by andy391791
Hi, please can somebody let me know the easiest way to add days to a date.

I can do this in perl but would like to able to do it in a shell script.

Desired output would be:

date +'%Y-%m-%d' + 10 = 2016-05-02

Thank you
If you know how to do this in perl, aren't you aware that you can invoke perl in a shell script?
# 5  
Old 04-22-2016
Yes,i was just asking if there is an easy shell alternative. Never mind, thanks anyway
# 6  
Old 04-22-2016
You haven't told us what OS you're using and you haven't told us what shell you're using. If you had the GNU date utility, you could use date -d in a shell script (but you have said that is not an option). If you have a recent version of ksh, you could use:
Code:
x=10
printf '%(%Y-%m-%d)T\n' "now + $x days"

currently producing the output:
Code:
2016-05-02

Of course, it is easy just using a standard date utility, parameter expansions, and arithmetic expansions to get the current date, extract the current day of the month, add the desired number of days you want to go forward and reformat the day of the month in the date output you want as long as the resulting day number is no greater than 28.

Otherwise, if you're unwilling to use perl, you can use date to get the current date and build calendar logic into your shell script, or use date to get the current date and process output from cal to find the date x days later (or earlier).
# 7  
Old 04-22-2016
Hi Don, using AIX 7.1 ksh.

Code:
x=10
printf '%(%Y-%m-%d)T\n' "now + $x days"

produces the following:

(%m-0)T

The perl script i use is as below and works fine but i guess im just being curious as to whether there was an easier way in shell without using GNU date or perl


Code:
days=7
input_date=2016-04-13
days=$(( (24 * $days) * (60 * 60) ))
echo $days
new_expiry_date=`perl -MTime::Local=timelocal -e '@t = split(/[-\/]/, $ARGV[0]);
 $t[1]--; print timelocal(1,1,1,reverse @t);' $input_date`
new_expiry_date=`perl -MPOSIX=strftime -e 'print strftime("%Y-%m-%d", localtime(
$ARGV[0] + '$days' ));' $new_expiry_date`
echo "new_expiry_date= $new_expiry_date"



#new_expiry_date=$(
#   perl -MTime::Piece -MTime::Seconds -le '
#        $new_expiry_date = Time::Piece->strptime($ARGV[0], "%Y-%m-%d") + '$days
'* ONE_DAY;
 #       print $new_expiry_date->ymd("-")
  #  ' "$input_date"
#)

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. HP-UX

awk command in hp UNIX subtract 30 days automatically from current date without date illegal option

current date command runs well awk -v t="$(date +%Y-%m-%d)" -F "'" '$1 < t' myname.dat subtract 30 days fails awk -v t="$(date --date="-30days" +%Y-%m-%d)" -F "'" '$1 < t' myname.dat awk command in hp unix subtract 30 days automatically from current date without date illegal option error... (20 Replies)
Discussion started by: kmarcus
20 Replies

2. Shell Programming and Scripting

UNIX date fuction - how to deduct days from today's date

Hi, One of my Unix scripts needs to look for files coming in on Fridays. This script runs on Mondays. $date +"%y%m%d" will give me today's date. How can I get previous Friday's date.. can I do "today's date minus 3 days" to get Friday's date? If not, then any other way?? Name of the files is... (4 Replies)
Discussion started by: juzz4fun
4 Replies

3. Shell Programming and Scripting

Adding days to system date then compare to a date

Hi! I am trying to read a file and every line has a specific date as one of its fields. I want to take that date and compare it to the date today plus 6 days. while read line do date=substr($line, $datepos, 8) #date is expected to be YYYYMMDD if ; then ...proceed commands ... (1 Reply)
Discussion started by: kokoro
1 Replies

4. Shell Programming and Scripting

Number of days between the current date and user defined date

I am trying to find out the number of days between the current date and user defined date. I took reference from here for the date2jd() function. Modified the function according to my requirement. But its not working properly. Original code from here is working fine. #!/bin/sh... (1 Reply)
Discussion started by: hiten.r.chauhan
1 Replies

5. Windows & DOS: Issues & Discussions

Adding or subtracting days from current date in batch script

Hi, I'm writing an batch file to create report In the batch file iam passing two arguments:startdate and finishdate Ex: startdate=07-sep-2009 finishdate=07-sep-2011 I need to have script that takes command line argument as input and gives me out currentdate last year and current date... (2 Replies)
Discussion started by: anand1773
2 Replies

6. Shell Programming and Scripting

Date after 5 days from current date in YYYYMMDD format

Hello Experts, How do i get date after 5 days from current date in YYYYMMDD format? How do you compare date in YYYYMMDD format? Thanks (8 Replies)
Discussion started by: needyourhelp10
8 Replies

7. Shell Programming and Scripting

how to get what date was 28 days ago of the current system date IN UNIX

Hi, Anybody knows how to get what date was 28 days ago of the current system date through UNIX script. Ex : - If today is 28th Mar 2010 then I have to delete the files which arrived on 1st Mar 2010, (15 Replies)
Discussion started by: kandi.reddy
15 Replies

8. Shell Programming and Scripting

date for two days or 3 days ago

i need a script that can tell me the date 2 days ago or 3 days ago. please help (7 Replies)
Discussion started by: tomjones
7 Replies

9. Shell Programming and Scripting

Adding days to an input date.

Hello Unix gurus, I need to add days to the input date and further use it in comparision with the existing date. Im having issues sto add days to date,can you guys help me with script or function with which I can add days to the date. Thanks, Sud (10 Replies)
Discussion started by: sud
10 Replies

10. UNIX for Dummies Questions & Answers

adding or subtracting days in the o/p of date

how can we add or subtract days from the output of date command in unix... like if i want to subtract a day from the result of date command like this.. v_date=`date +%Y%m%d` this wud give me 20080519 now i want to subtract one day from this.. so tht it wud give me 20080518.. how do i do... (1 Reply)
Discussion started by: St.Fartatric
1 Replies
Login or Register to Ask a Question