我正在使用PHP的DateTime对象来操纵日期。我发现了一个奇怪的例子,结果日期似乎不对:
$dt = new DateTime('2020-02-29 23:59:59');
$dt->modify('-1 year');
echo $dt->format('Y-m-d H:i:s');这段代码给出了2019-03-01 23:59:59而不是2019-02-28 23:59:59。我相信这是在2020年的2月29日,但我不知道如何解决这个问题。
注意修饰符可以是任何东西,而不仅仅是-1 year**. 一个孤立年份减去一年的解决方案不符合我的需要。**
发布于 2020-11-19 09:55:51
我想出了一件似乎可行的工作。
我注意到,这个月的第一天一切都很顺利:
$dt = new DateTime('2020-02-01 00:00:01');
$dt->modify('-1 year');
echo $dt->format('Y-m-d H:i:s'); // 2019-02-01 00:00:01在这个声明中,我只是在需要操作“月底”日期时添加了几个步骤:
$dt = new DateTime('2020-02-29 23:59:59');
$dt->modify('first day of this month');
$dt->modify('-1 year');
$dt->modify('last day of this month');
echo $dt->format('Y-m-d H:i:s'); // 2020-02-28 23:59:59https://stackoverflow.com/questions/64908868
复制相似问题