echo date("Y", strtotime('2019-W01'));
这应该给我'2019'吗?
不,它给出的是'2018'。
在什么时候
echo date("Y", strtotime('2019-W02'));
这次是'2019',对吧。
我想这是一个错误或有我不知道的东西吗?
(测试时,默认时区为UTC)
答案 0 :(得分:2)
这不是错误,可以按预期运行。 echo $date->format('Y');
之所以返回2018,是因为 2019 的第一周是 2018-12-31 的这一天。让我们看看当我尝试使用格式Y-m-d
时,例如echo date("Y-m-d", strtotime('2019-W01'));
返回2018-12-31
,而echo date("Y", strtotime('2019-W01'));
则返回2019
,因为它是2019-01-07
。让我们尝试一下echo date("Y-m-d", strtotime('2019-W02'));
<?php
$date= new \DateTime('2019-W01');
echo $date->format('Y');
echo PHP_EOL;
echo $date->format('Y-m-d');
//echo date("Y", strtotime('2019-W01'));
?>