我试图将日期“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
。
有没有办法改善我的每周聚合数据设计或获得“正确”的一年?
答案 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