首页 > 解决方案 > DateTime 加 1 个月将返回错误的日期

问题描述

我今天偶然发现了这个:

如果我从今天的日期减去 1 个月和 1 天,我会得到 2020-10-31,如果我将其反转,所以我将 1 个月和 1 天添加回原始日期,那么我应该得到今天的日期,但我得到明天的日期.

$now=DateTime::createFromFormat('Y-m-d', '2020-12-01');
$now->sub(new DateInterval('P1M1D'));
$now->add(new DateInterval('P1M1D'));
echo($now->format('Y-m-d')); \\ prints 2020-12-02
assert($now->format('Y-m-d')=='2020-12-01'); \\Fails

有没有人对此有解释,我怎样才能避免得到错误的日期?

编辑

编辑 2

我实际上在stackoverflow上找到了这个确切的问题(不知道我昨天怎么没找到它)这个答案详细回答了我的问题。

标签: php

解决方案


推荐阅读