从一年中的第一天减去1天不能按预期工作

时间:2019-01-17 02:10:10

标签: php datetime

嗨,我正尝试使用php从一年中的第一天减去1天和1年

代码

        var_dump(date('Y-01-01', strtotime('-1 day')));
        var_dump(date('Y-01-01', strtotime('-1 year')));

结果

string(10) "2019-01-01" string(10) "2018-01-01"

我希望第一个结果是2018-12-31而不是2019-01-01,为什么只有-1 year可以正常工作?请帮忙 。预先感谢。

1 个答案:

答案 0 :(得分:3)

实际上不是从年初开始减去一天或一年,而是从当前日期减去它们。另外,由于您使用Y-01-01格式进行输出,因此两个日期的月份和日期始终始终为1。您需要首先生成一年的第一天,然后从中减去并使用Y-m-d格式输出:

$foy = strtotime(date('Y-01-01'));
var_dump(date('Y-m-d', strtotime('-1 day', $foy)));
var_dump(date('Y-m-d', strtotime('-1 year', $foy)));

输出:

string(10) "2018-12-31" 
string(10) "2018-01-01"

Demo on 3v4l.org