在PHP中循环特定日期(跨月)

在PHP中循环特定日期(跨月),php,date,time,Php,Date,Time,我正在从事一个每周生成报告的项目,因此,如果今天的日期是“2013/09/05”,代码必须计算出七天前的日期是什么,即“2013/08/29”,考虑到某些月份比其他月份长 然后我想对数据库运行日期,查找匹配项 这是我迄今为止所做的,但它不起作用 // Start date $text = explode('/', $date); //2013/09/05 $day = $text[2]; $month = $text[1]; $

我正在从事一个每周生成报告的项目,因此,如果今天的日期是“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;
}
//开始日期
$text=分解(“/”,$date)//2013/09/05
$day=$text[2];
$month=$text[1];
$year=$text[0];
$pass_day=$day-7//-2.
//确定$pass_day是否为负值
如果($过去的天数<0){
$month=$month-1;//08
$var=$day-0;//2
$num=每月的计算天数(计算公历,$month,$year);
$var=($num-$var);//29
$start_date=$year.“/”$month.“/”$var;
}否则{
$start_date=$year.“/”$month.“/”$pass_day;
}
谢谢大家

试试这个:)

$date=“2013/09/05”;
//开始日期
$text=分解(“/”,$date)//2013/09/05
$day=$text[2];
$month=$text[1];
$year=$text[0];
$pass_day=$day-7//-2.
//确定$pass_day是否为负值
如果($过去的天数<0){
$month=$month-1;//08
$var=($pass_day)*-1;//2
$num=每月的计算天数(计算公历,$month,$year);
$var=($num-$var);//29
$start_date=$year.“/”$month.“/”$var;
}否则{
$start_date=$year.“/”$month.“/”$pass_day;
}

请告诉我们它是如何“不起作用的”-您得到的日期不正确吗?是的,我得到的不是var=29,而是26。。。这使得开始日期和结束日期之间的间隔正好是9天!!,另外,我不知道如何根据数据库运行日期,谢谢。谢谢兄弟,它工作得很好,似乎问题在于将$var从负值转换为正值。
$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;
}