Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP日期()的年份值错误_Php_Date_Datetime_Date Range - Fatal编程技术网

PHP日期()的年份值错误

PHP日期()的年份值错误,php,date,datetime,date-range,Php,Date,Datetime,Date Range,给定开始和结束日期,我需要生成一个包含年和周值的数组。 例如: 开始日期:2013-01-01 结束日期:2013-02-23 生成的数组: Array ( [0] => Array ( [week] => 01 [year] => 2013 ) [1] => Array ( [week] => 02 [year] => 2013 ) [2] => Array ( [week] => 03 [year] => 2013 ) [3] => Array ( [week] => 04 [year

给定开始和结束日期,我需要生成一个包含年和周值的数组。 例如:

开始日期:2013-01-01

结束日期:2013-02-23

生成的数组:

Array ( [0] => Array ( [week] => 01 [year] => 2013 ) [1] => Array ( [week] => 02 [year] => 2013 ) [2] => Array ( [week] => 03 [year] => 2013 ) [3] => Array ( [week] => 04 [year] => 2013 ) [4] => Array ( [week] => 05 [year] => 2013 ) [5] => Array ( [week] => 06 [year] => 2013 ) [6] => Array ( [week] => 07 [year] => 2013 ) [7] => Array ( [week] => 08 [year] => 2013 ) ) 数组([0]=>数组([week]=>01[year]=>2013) [1] =>阵列([周]=>02[年]=>2013年) [2] =>阵列([周]=>03[年]=>2013年) [3] =>阵列([周]=>04[年]=>2013年) [4] =>阵列([周]=>05[年]=>2013年) [5] =>阵列([周]=>06[年]=>2013年) [6] =>阵列([周]=>07[年]=>2013年) [7] =>阵列([周]=>08[年]=>2013年)) 下面是我用来生成此代码的代码:

public static function getYearWeekRange($startdate, $enddate) {
    $array = array();
    $starttime = strtotime($startdate);
    $endtime = strtotime($enddate);
    while ($starttime <= $endtime) {
        $year = date('Y', $starttime);
        $week = date('W', $starttime);
        $array[] = array('week' => $week, 'year' => $year);
        $starttime = strtotime('+1 week', $starttime);
    }
    return $array;
}
公共静态函数getYearWeekRange($startdate,$enddate){
$array=array();
$starttime=strotime($startdate);
$endtime=strottime($enddate);
而($starttime$week,'year'=>$year);
$starttime=strotime(‘+1周’,$starttime);
}
返回$array;
}

我的问题是,当我生成某些日期范围时,我在2013年初没有得到正确的年份值。例如:

开始日期:2012-01-01

结束日期:2013-02-23

在这种情况下,它应该有一个子数组,其中year=2013,week=01,实际上它的year值等于2012

例如,如果我将开始日期切换到2013-01-05,那么就没有问题


有谁能提供一个解决方案来保证我的年和周值始终正确吗?

我可以使用以下方法解决我的问题:

public static function getWeekRange($startdate, $enddate) {
    $array = array();
    $p = new DatePeriod(
        new DateTime($startdate), 
        new DateInterval('P1W'), 
        new DateTime($enddate)
    );
    foreach ($p as $w) {
        $array[] = array('year' => $w->format('o'), 'week' => $w->format('W'));
    }
    return $array;
}

谢谢,链接中的示例修复了我的问题。删除了我的答案,因为它显然没有用,但你仍然没有很清楚地解释问题所在。