2015-04-28 31 views
1

我试图将日期“YYYY/MM/DD”转换为“YYYY/WW”格式,因此我可以存储每周聚合数据,下面使用PHP获取某个日期的“正确”年份DateTime

aggre_date(YYYY/WW) value id 

但结构我发现了一个讨厌的问题

$dateTime = new DateTime("2014-12-30"); 
echo $dateTime->format("Y-W")."\n"; 
$dateTime = new DateTime("2014-01-01"); 
echo $dateTime->format("Y-W")."\n"; 

结果是完全一样的2014-01,但前者应该是2015-01

有什么方法可以改进我的每周聚合数据设计或获得“正确的”一年吗?

回答

4

您需要使用o为ISO年份:

ISO 8601年的数字。这与Y的值相同,只是如果ISO周数(W)属于上一年或下一年,则使用该年。 (在PHP 5.1.0添加)

$dateTime = new DateTime("2014-12-30"); 
echo $dateTime->format("o-W")."\n"; 
$dateTime = new DateTime("2014-01-01"); 
echo $dateTime->format("o-W")."\n"; 

2015-01 
2014-01 

Demo

+1

尼斯赶上'O'。 –

相关问题