2012-04-23 3 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"와 같은 $ day를 전달합니다. "MONDAY "그리고 그것은 나에게 날짜를 돌려 준다. 그러나 어떤 이유로 그것은 첫 번째 일요일을 놓치고 있습니다.PHP 평일부터 평일까지

예를 들어 오늘 "Sunday April 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)); 
} 

하지만, 대신 PHP의 기본 DateTime 클래스를 사용하는 것이 좋습니다 :

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

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

당신이 꽤 깔끔한 물건을 할 수있는 DateTime 개체를 사용에 당신이 즉시 변경해야 할 경우에 대비하여, 하드 코딩 된 날짜 형식을 메서드/함수에서 제거 할 수 있도록하는 것 외에도.

+0

감사합니다. "drrcknlsn"솔루션이 매력처럼 작동했습니다. –