twig date_diff 月无法正常工作
twig date_diff month not working properly
我上个月尝试做 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 #}
任何人知道为什么吗?因为如果用偶数修改月份,你会在月初而不是上个月结束。
根据答案 here 看来,当 PHP 使用字符串 '-1 month'
修改 DateTime()
对象时,如果我理解正确的话,它只会减少月份值.
因此,根据您的示例,您从今天的日期开始: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 的缺点之一。好乱,一天可以发生很多事情!
我上个月尝试做 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 #}
任何人知道为什么吗?因为如果用偶数修改月份,你会在月初而不是上个月结束。
根据答案 here 看来,当 PHP 使用字符串 '-1 month'
修改 DateTime()
对象时,如果我理解正确的话,它只会减少月份值.
因此,根据您的示例,您从今天的日期开始: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 的缺点之一。好乱,一天可以发生很多事情!