PHP strotime+;1周误差

PHP strotime+;1周误差,php,date,strtotime,week-number,Php,Date,Strtotime,Week Number,我对strotime和以下代码有问题(我需要给定时间范围内的所有日历漏洞) 问题是条目编号52带有“2014-01”,应该是“2015-01”。时间范围为2015-01-01至2016-03-01,结果正常。这是strotime函数中的错误吗? 我使用的是PHP版本5.5.10 感谢您的帮助。这与ISO周数有关。另外,strotime()是一种不好的日期计算方法,PHP建议不要这样做(感谢闰年和夏令时)。使用DateTime()类可以准确地执行此操作: $startdate = new Date

我对strotime和以下代码有问题(我需要给定时间范围内的所有日历漏洞)

问题是条目编号52带有“2014-01”,应该是“2015-01”。时间范围为2015-01-01至2016-03-01,结果正常。这是strotime函数中的错误吗? 我使用的是PHP版本5.5.10


感谢您的帮助。

这与ISO周数有关。另外,
strotime()
是一种不好的日期计算方法,PHP建议不要这样做(感谢闰年和夏令时)。使用
DateTime()
类可以准确地执行此操作:

$startdate = new DateTime('2014-01-01');
$enddate   = new DateTime('2015-03-01');
$interval  = new DateInterval('P7D');
$period    = new DatePeriod($startdate , $interval, $enddate);

foreach($period as $date) {
    $all_dates[] = $date->format('o-W'); // o modifier for ISO year
}

var_dump($all_dates);

这与ISO周数有关。另外,
strotime()
是一种不好的日期计算方法,PHP建议不要这样做(感谢闰年和夏令时)。使用
DateTime()
类可以准确地执行此操作:

$startdate = new DateTime('2014-01-01');
$enddate   = new DateTime('2015-03-01');
$interval  = new DateInterval('P7D');
$period    = new DatePeriod($startdate , $interval, $enddate);

foreach($period as $date) {
    $all_dates[] = $date->format('o-W'); // o modifier for ISO year
}

var_dump($all_dates);

更改此行并使用
o
iso年份:

$all_dates[] = date('o-W', strtotime($tempdate));
                 //  ^

更改此行并使用
o
iso年份:

$all_dates[] = date('o-W', strtotime($tempdate));
                 //  ^

我也是。我想我第一次试的时候可能是打错了什么的。之前的一条被删除了,现在评论都乱了。但是,是的,我第二次尝试成功了。我怎么会是唯一一个投票支持这一点的人呢?虽然我的答案可能是更好的练习,但这是对这个问题的更好回答。@johncode没问题,事实上,如果我是OP,我更希望你的答案,
DateTime
classrocksi也做了。我想我第一次试的时候可能是打错了什么的。之前的一条被删除了,现在评论都乱了。但是,是的,我第二次尝试成功了。我怎么会是唯一一个投票支持这一点的人呢?虽然我的答案是更好的练习,但这是对这个问题的更好回答。@johncode没问题,实际上如果我是OP,我更希望你的答案,
DateTime
class