2012-04-23 2 views
2
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; 
} 

я использую вышеуказанную функцию для преобразования буднего дня (например, понедельник) на дату текущей недели, я использую эту функцию в цикле и передать в $ дня, как «SUNDAY» «ПОНЕДЕЛЬНИК «и он возвращает мне дату. но по какой-то причине его отсутствует в первое воскресенье.PHP конвертировать будний датировать

например, если его «воскресенье 22 апреля 2012 года» сегодня, и я прохожу в ВОСКРЕСНО, он дает мне дату следующего воскресенья, а не сегодня.

всякая помощь была бы высоко оценена.

Спасибо.

+1

Вы считали ['date ('l')'] (http://nl3.php.net/manual/en/function.date.php)? –

+0

Вы считаете strtotime()? – squarephoenix

ответ

4

Вы можете использовать strtotime() магию для этого:

function dayDate($day) { 
    return date('m-d-Y', strtotime('next ' . $day)); 
} 

Рассмотрите возможность использования родного DateTime класса PHP вместо, хотя:

function dayDate($day) { 
    return new DateTime('next ' . $day); 
} 

$nextMonday = dayDate('Monday'); 
echo $nextMonday->format('m-d-Y'); // 04-30-2012 

Использование DateTime объекта позволяет сделать некоторые довольно интересные вещи, в кроме того, чтобы вы удалили форматированный формат даты из вашего метода/функции, в случае, если вам нужно изменить его на лету.

+0

благодаря большому «drrcknlsn» ваше решение работало как шарм –

 Смежные вопросы

  • Нет связанных вопросов^_^