闰年的最后一天,53或1周?

时间:2013-02-19 20:21:15

标签: php date datetime

我有一个处理原始CSV数据并生成按年份分组的报告的脚本 看起来像这样:

//timezone is set to Europe/London
$date = new DateTime($raw['order_date']); // example: 12/31/2012

$key = $date->format('Y W'); // 2012 01

$array[$key][] = $raw['product_id'];

一切正常,直到我试图解析新年前后产生的数据,由于某种原因,系统认为2012年12月31日是2012年的第1周。 我不确定它是错误还是一个功能,但产生的报告肯定是错误的。

传递此问题并将数据按周分组的正确方法是什么?

3 个答案:

答案 0 :(得分:7)

试试这个:

$key = $date->format('o W');

答案 1 :(得分:0)

我认为本周定义为星期四,这意味着如果星期四在2013年下降,那么它将被计为当年的一周。

答案 2 :(得分:0)

$w=(int)date('W');

$m=(int)date('n');

$w=$w==1?($m==12?53:1):($w>=51?($m==1?0:$w):$w);

$year = date('Y');

if($w==53)

{

$year=$year+1;

}

去年我正在获得所有d记录但是在2016年4月首次选择比我2015年4月报告显示任何遗漏或闰年问题