来自PHP日期的年值错误()
问题描述:
给定开始日期和结束日期,我需要生成一个包含年份和周值的数组。 例如:来自PHP日期的年值错误()
开始日期:2013-01-01
结束日期:2013年2月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))
下面是代码我正在使用产生此:
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;
}
我的问题是,当我生成某些日期范围时,我没有在2013年开始时获得正确的年份值。例如:
开始日期:2012-01-01
结束日期:2013年2月23日
在这种情况下,它应该有一年子阵= 2013周= 01,实际上它的年份值等于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;
}
+0
删除我的答案显然它没有用,但你还没有真正解释问题非常清楚。 – 2013-02-21 16:37:01
感谢,在链接的例子固定我的问题。 – Justin 2013-02-21 16:34:53