I need to create three variables, each for Year, Month, and Day for Today’s date, minus X number of days. For this question I’ll choose a random amount of days: 222.
So if:
TodayYear=`date +%Y`
TodayMonth=`date +%m`
TodayDay=`date +%d`
What I want is 222 days before this.
222days_before_TodayYear=???
222days_before_TodayMonth=???
222days_before_TodayDay=???
Edit: Need 222 working days instead 222 regular days.
For GNU
date:For BSD
date::If you are using OS X or FreeBSD, use the following instead because BSD date is different from GNU date:
Source: BSD date manual page
Note:
In
bashand many other languages, you cannot start a variable name with a numerical character, so I prefixed them withdate_for you.Second Update: New requirement – Using 222 Working days instead of 222 Regular days:
(Assumption: Not considering statutory holidays, because that just gets far beyond the scope of what I can help you with in a shell script:)
Consider 222 working days:
floor(222/5) == 44 weeks44 weeks * 7 days per week == 308 days222 % 5 == 2222 working days == 310 regular daysBut, there is a catch! If the number of regular days is
308or some multiple of7, then we would have been fine, because any multiple of 7-days ago from a working day is still a working day. So we need to consider whether today is a Monday or a Tuesday:So you see we need an additional offset of 2 more days if today is either Monday or Tuesday; so let’s find that out first before we proceed:
And that should do it =)