2012-05-30 3 views
1

주 단위 및 월 단위로 주문을 계산해야합니다. 내가 설정을 가지고 코드는 지금까지 그렇게 같다 : 여기주 단위 및 월 단위로 PHP로 주문 계산

foreach ($commissions as $c) { 
    $ts = strtotime($c['order_date']); 

    $lastWeekKey = date("Y-m-d", strtotime('last monday', $ts)); 
    $nextWeekKey = date("Y-m-d", strtotime('next sunday', $ts)); 

    $stringDays = $lastWeekKey." to ".$nextWeekKey; 

    if (!isset($dates[$stringDays])) { 
     $dates[$stringDays] = 0; 
    } 
    $dates[$stringDays] += $c['projected_payment']; 
} 

문제는 날짜가 월요일에 떨어지면, 다음은 지난 월요일과 다음 일요일를 얻을 수 있다는 것입니다. 월요일이 아니라 다음 달을 계산해야합니다. 같은 달에도 갈 것입니다. 모두, 나는 단지 가장 정확하고 단순한 대답을 찾고 있습니다. 형식이 될 필요는 없습니다. 매달과 매주 둘 다.

+0

[strtotime] (http://php.net/manual/en/function.strtotime.php)의 매뉴얼 페이지에있는 예를 보았습니까? – Havelock

+0

'date' 함수가 제공하는 다양한 형식화 매개 변수를 확인하십시오. 그리고 왜 그들 모두가 맞지 않는지 설명해주십시오. 만약 하나가 있다면 (그리고 당신이 추측 할 수 있듯이, 하나가 있습니다.)) 맞습니다. 축하드립니다! – hakre

답변

0

기존 코드를 사용하면 키를 정의하기 전에 if 문을 추가 할 수 있습니다. IE :

$thisday=getdate($ts); 
if($thisday==1) { //1 = Monday 
    $lastWeekKey = date("Y-m-d", strtotime('today',$ts)); 
    $nextWeekKey = date("Y-m-d", strtotime('next sunday',$ts)); 
} else { 
    $lastWeekKey = date("Y-m-d", strtotime('next monday',$ts)); 
    $nextWeekKey = date("Y-m-d", strtotime('next sunday',$ts)); 
} 

"오늘"이 당일의 실제 텍스트 표현인지 확인해야합니다.

0

mysql을 사용하는 경우 SQL에서 많은 작업을 수행 할 수 있습니다.

$x = mysql_query("SELECT * FROM `mysales` 
      WHERE `MerchantID`=’$id’ 
      AND `Saledate` > ’TIMESTAMP(".strtotime(’-1 week’).")’"); 
관련 문제