在php中每周和每月计算订单

时间:2012-05-30 17:08:21

标签: php cakephp-1.3

我需要每周和每月计算订单。到目前为止我设置的代码是这样的:

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'];
}

这里的问题是,如果日期是星期一,则是上周一和下一个星期日。我需要它计算周一,而不是下一个。这个月也是如此。总之,我只是在寻找最准确和最简单的答案。它不必是格式。每月和每周都有。

2 个答案:

答案 0 :(得分:0)

使用现有代码,您可以在定义Key之前添加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));
}

您可能需要检查“今天”是当天的实际文字表示。

答案 1 :(得分:0)

如果你使用mysql,你可以让sql做很多工作。

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