Цикл по конкретным датам (крест месяцам) в PHP

Я работаю над проектом, который создает отчеты еженедельно, поэтому, если сегодняшняя дата - "2013/09/05", код должен выяснить, какой была дата семь дней назад, то есть "2013/08/29" с учетом того, что некоторые месяцы длиннее других.

а затем я хочу запустить даты в базе данных в поисках совпадений...

это то, что я сделал до сих пор, но это не работает.

  // Start date
        $text = explode('/', $date); //2013/09/05
        $day = $text[2];
        $month = $text[1];
        $year = $text[0];
        $past_day = $day - 7; //-2


  // determine if $past_day is negative 
if ($past_day < 0){

    $month = $month - 1; //08
    $var = $day - 0; //2
    $num = cal_days_in_month(CAL_GREGORIAN, $month, $year);
    $var = ($num - $var); // 29
    $start_date = $year."/".$month."/".$var;

}else{
    $start_date = $year."/".$month."/".$past_day;
}

Большое спасибо, ребята!

1 ответ

Решение

Попробуй это:)

$date = "2013/09/05";
// Start date
    $text = explode('/', $date); //2013/09/05
    $day = $text[2];
    $month = $text[1];
    $year = $text[0];
    $past_day = $day - 7; //-2


// determine if $past_day is negative 
if ($past_day < 0){

$month = $month - 1; //08

$var = ($past_day)*-1; //2
$num = cal_days_in_month(CAL_GREGORIAN, $month, $year);
$var = ($num - $var); // 29
$start_date = $year."/".$month."/".$var;

}else{
$start_date = $year."/".$month."/".$past_day;
}
Другие вопросы по тегам