twig date_diff月份工作不正常

时间:2015-07-31 11:23:31

标签: symfony twig

我上个月尝试做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有什么想法?因为在月份开始的任何修改月份都是偶数,所以从上个月开始不是。

1 个答案:

答案 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的一个弱点。相当凌乱,一天可能发生很多事情!