使用PHP DateTime获取某个日期的“正确”年份

时间:2015-04-28 02:16:26

标签: php datetime isodate

我试图将日期“YYYY / MM / DD”转换为“YYYY / WW”格式,因此我可以存储每周聚合数据,其结构如下

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

有没有办法改善我的每周聚合数据设计或获得“正确”的一年?

1 个答案:

答案 0 :(得分: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