I need a function that gives me a date, given a date and a day. My week starts always on a Saturday and ends on a Friday. I need to know the date of each of the days of this week, given any date in this week.
getdatefromday($date,$day);
For example :
$date = "2016/04/10";
$day = "Thu";
getdatefromday($date,$day);
//Result is 2016-04-14
I have solved this problem already using the code bellow, but I am sure this can be solved in lot less lines, I just can't figure it out.
This is my solution to this problem :
function getdatefromday($date,$day) {
$curr_day = date("D", strtotime($date));
switch ($curr_day) {
case 'Sat':
switch ($day) {
case 'Sat':
return $date;
break;
case 'Sun':
return date('Y-m-d',(strtotime ( '+1 day' , strtotime ( $date) ) ));
break;
case 'Mon':
return date('Y-m-d',(strtotime ( '+2 day' , strtotime ( $date) ) ));
break;
case 'Tue':
return date('Y-m-d',(strtotime ( '+3 day' , strtotime ( $date) ) ));
break;
case 'Wed':
return date('Y-m-d',(strtotime ( '+4 day' , strtotime ( $date) ) ));
break;
case 'Thu':
return date('Y-m-d',(strtotime ( '+5 day' , strtotime ( $date) ) ));
break;
case 'Fri':
return date('Y-m-d',(strtotime ( '+6 day' , strtotime ( $date) ) ));
break;
}
case 'Sun':
switch ($day) {
case 'Sat':
return date('Y-m-d',(strtotime ( '-1 day' , strtotime ( $date) ) ));
break;
case 'Sun':
return $date;
break;
case 'Mon':
return date('Y-m-d',(strtotime ( '+1 day' , strtotime ( $date) ) ));
break;
case 'Tue':
return date('Y-m-d',(strtotime ( '+2 day' , strtotime ( $date) ) ));
break;
case 'Wed':
return date('Y-m-d',(strtotime ( '+3 day' , strtotime ( $date) ) ));
break;
case 'Thu':
return date('Y-m-d',(strtotime ( '+4 day' , strtotime ( $date) ) ));
break;
case 'Fri':
return date('Y-m-d',(strtotime ( '+5 day' , strtotime ( $date) ) ));
break;
}
break;
case 'Mon':
switch ($day) {
case 'Sat':
return date('Y-m-d',(strtotime ( '-2 day' , strtotime ( $date) ) ));
break;
case 'Sun':
return date('Y-m-d',(strtotime ( '-1 day' , strtotime ( $date) ) ));
break;
case 'Mon':
return $date;
break;
case 'Tue':
return date('Y-m-d',(strtotime ( '+1 day' , strtotime ( $date) ) ));
break;
case 'Wed':
return date('Y-m-d',(strtotime ( '+2 day' , strtotime ( $date) ) ));
break;
case 'Thu':
return date('Y-m-d',(strtotime ( '+3 day' , strtotime ( $date) ) ));
break;
case 'Fri':
return date('Y-m-d',(strtotime ( '+4 day' , strtotime ( $date) ) ));
break;
}
case 'Tue':
switch ($day) {
case 'Sat':
return date('Y-m-d',(strtotime ( '-3 day' , strtotime ( $date) ) ));
break;
case 'Sun':
return date('Y-m-d',(strtotime ( '-2 day' , strtotime ( $date) ) ));
break;
case 'Mon':
return date('Y-m-d',(strtotime ( '-1 day' , strtotime ( $date) ) ));
break;
case 'Tue':
return $date;
break;
case 'Wed':
return date('Y-m-d',(strtotime ( '+1 day' , strtotime ( $date) ) ));
break;
case 'Thu':
return date('Y-m-d',(strtotime ( '+2 day' , strtotime ( $date) ) ));
break;
case 'Fri':
return date('Y-m-d',(strtotime ( '+3 day' , strtotime ( $date) ) ));
break;
}
case 'Wed':
switch ($day) {
case 'Sat':
return date('Y-m-d',(strtotime ( '-4 day' , strtotime ( $date) ) ));
break;
case 'Sun':
return date('Y-m-d',(strtotime ( '-3 day' , strtotime ( $date) ) ));
break;
case 'Mon':
return date('Y-m-d',(strtotime ( '-2 day' , strtotime ( $date) ) ));
break;
case 'Tue':
return date('Y-m-d',(strtotime ( '-1 day' , strtotime ( $date) ) ));
break;
case 'Wed':
return $date;
break;
case 'Thu':
return date('Y-m-d',(strtotime ( '+1 day' , strtotime ( $date) ) ));
break;
case 'Fri':
return date('Y-m-d',(strtotime ( '+2 day' , strtotime ( $date) ) ));
break;
}
case 'Thu':
switch ($day) {
case 'Sat':
return date('Y-m-d',(strtotime ( '-5 day' , strtotime ( $date) ) ));
break;
case 'Sun':
return date('Y-m-d',(strtotime ( '-4 day' , strtotime ( $date) ) ));
break;
case 'Mon':
return date('Y-m-d',(strtotime ( '-3 day' , strtotime ( $date) ) ));
break;
case 'Tue':
return date('Y-m-d',(strtotime ( '-2 day' , strtotime ( $date) ) ));
break;
case 'Wed':
return date('Y-m-d',(strtotime ( '-1 day' , strtotime ( $date) ) ));
break;
case 'Thu':
return $date;
break;
case 'Fri':
return date('Y-m-d',(strtotime ( '+1 day' , strtotime ( $date) ) ));
break;
}
case 'Fri':
switch ($day) {
case 'Sat':
return date('Y-m-d',(strtotime ( '-6 day' , strtotime ( $date) ) ));
break;
case 'Sun':
return date('Y-m-d',(strtotime ( '-5 day' , strtotime ( $date) ) ));
break;
case 'Mon':
return date('Y-m-d',(strtotime ( '-4 day' , strtotime ( $date) ) ));
break;
case 'Tue':
return date('Y-m-d',(strtotime ( '-3 day' , strtotime ( $date) ) ));
break;
case 'Wed':
return date('Y-m-d',(strtotime ( '-2 day' , strtotime ( $date) ) ));
break;
case 'Thu':
return date('Y-m-d',(strtotime ( '-1 day' , strtotime ( $date) ) ));
break;
case 'Fri':
return $date;
break;
}
}
}
Any ideas?