我上个月尝试做date_diff,但是如果有一个月有31天,他说我本月就到了01,那就有问题了。如果2个月后做得好。但是每个月都有31天的结果给01。
为了更清楚,我举例:
{{ "now" | date("Y-m-d") }} {# 2015-07-31 #}
{{ "now" | date_modify("-1 month") | date("Y-m-d") }} {# 2015-07-01 #}
{{ "now" | date_modify("-2 month") | date("Y-m-d") }} {# 2015-05-31 #}
{{ "now" | date_modify("-3 month") | date("Y-m-d") }} {# 2015-05-01 #}
Any1有什么想法?因为在月份开始的任何修改月份都是偶数,所以从上个月开始不是。
答案 0 :(得分:2)
基于答案here,当PHP使用字符串DateTime()
修改'-1 month'
对象时,如果我理解正确的话,它只会减少月份值。
因此,举个例子,您可以从今天的日期开始:2015-07-31
。
PHP将其更改为2015-06-31
。但是,6月只有30天。因此,它会增加到下一个有意义的日期,即...... 2015-07-01
。
我尝试用以下方法复制:
echo (new DateTime())->sub(new DateInterval('P1M'))->format('Y-m-d');
和
$dt = new DateTime();
$dt->modify('-1 month');
echo $dt->format('Y-m-d');
我在每种情况下都得到了完全相同的结果:
2015-07-01
所以我猜它只是PHP的一个弱点。相当凌乱,一天可能发生很多事情!