2013-02-19 88 views
3

我有一個處理原始CSV數據的腳本,並生成按一年中的星期分組的報告。
這看起來是這樣的:閏年的最後一天,第53或第1周?

//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

http://en.wikipedia.org/wiki/ISO_week_date#First_week - 這是正確的 - 看這裏 – 2013-02-19 20:24:11

回答

7

試試這個:

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

神祕解決了,我完全忘記了'o'參數 – Nazariy 2013-02-19 20:36:02

0

我認爲星期四是星期四定義的,這意味着如果星期四在2013年下降,那麼它被認爲是當年的一週。

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月的報告顯示任何東西丟失或它的閏年問題