php - 使用 PHP DateTime 获取特定日期的 "Right"年份

标签 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

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

最佳答案

您需要使用 o 作为 ISO 年份:

ISO-8601 year number. This has the same value as Y, except that if the ISO week number (W) belongs to the previous or next year, that year is used instead. (added in 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

关于php - 使用 PHP DateTime 获取特定日期的 "Right"年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32020395/

相关文章:

php - 写在中心

MongoDB 按日期以字符串格式聚合不起作用

php - MySQL UPDATE 函数拒绝更新数据库

c# - .NET 中的 DateTime 时区似乎有误?

javascript - 以本地时区解析 JavaScript 日期

javascript - 如何在javascript中仅从UTC时间获取日期和时间

mongodb - 与简单文本相比,将日期作为 ISODate 存储在数据库中有什么优势?

python - 当毫秒为零时,PyMongo 存储 ISODate 时没有毫秒

php - 计算按一年中的几周分组的记录

php - Mysql+php,如何制作一个链接,当您按 "headline"时显示记录中的所有数据