php convert weekday to date
Question
function dayDate($day) {
$dayArr = array(
0 => 'MONDAY',
1 => 'TUESDAY',
2 => 'WEDNESDAY',
3 => 'THURSDAY',
4 => 'FRIDAY',
5 => 'SATURDAY',
6 => 'SUNDAY'
);
$sunday = mktime(0, 0, 0, date('m'), date('d')+(1-date('w')), date('Y'));
$n = array_search("$day",$dayArr);
$date = date('m-d-Y', $sunday+$n*60*60*24);
return $date;
}
i am using the above function to convert a weekday (e.g. Monday) to a date of current week, i use this function in a loop and pass in $day like "SUNDAY" "MONDAY" and it returns me the date. but for some reason its missing the first Sunday.
for example if its "Sunday April 22, 2012" today and i pass in SUNDAY it gives me the date of next Sunday instead of today.
any help would be highly appreciated.
Thanks.
Solution
You can use strtotime()
magic for this:
function dayDate($day) {
return date('m-d-Y', strtotime('next ' . $day));
}
Consider using PHP's native DateTime
class instead, though:
function dayDate($day) {
return new DateTime('next ' . $day);
}
$nextMonday = dayDate('Monday');
echo $nextMonday->format('m-d-Y'); // 04-30-2012
Using the DateTime
object allows you to do some pretty neat stuff, in addition to allowing you to remove the hard-coded date format from your method/function, in case you need to change it on the fly.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow