Jay
Jay

Reputation: 23

Unix Shell scripting - calculating last week date based on given date


Need a help in unix shell script in calculating date.

I will be getting date value (eg: 20150908) as parameter, now inside the script i need to calculate 7 days ago date (20150908 -7).

something like below: date=20150908
lastweek_date=20150908 - 7 ---> this should output as 20150901

Could someone help me on this.

Thanks

Upvotes: 0

Views: 2080

Answers (2)

user4832408
user4832408

Reputation:

A week is 604800 seconds long so to get the number of seconds since the epoch in a portable and POSIX compliant fashion and use it to compute the date 1 week ago do as follows:

PRESENT=$( date +%s )

WEEKAGO=$(( PRESENT - 604800 ))

printf "%s\n" "$WEEKAGO"

Upvotes: -1

John1024
John1024

Reputation: 113834

With GNU date, we can subtract one week:

$ date -d "20150908 - 1 week" '+%Y%m%d'
20150901

Alternatively, we could subtract 7 days:

$ date -d "20150908 - 7 days" '+%Y%m%d'
20150901

And, to show that this works over month boundaries:

$ date -d "20150901 - 1 week" '+%Y%m%d'
20150825

This solution is not OSX/BSD compatible.

Upvotes: 2

Related Questions