strtotime 方法返回结果跟预期不符

异常 demo

$yesterday = '2023-10-31';
$last_m = date('Y-m', strtotime('last month',strtotime($yesterday)));
// 期望 $last_m = '2023-09' 实际 $last_m = '2023-10'
$this_m = date('Y-m', strtotime($yesterday));

正常 demo

$yesterday = '2023-10-31';
$this_m = date('Y-m', strtotime($yesterday));
$last_m = date('Y-m', strtotime('last month', strtotime($this_m)));

疑问

是环境配置问题?还是 strtotime 本身的问题?

感谢阅读,有收获的话不妨点个赞:smiling_imp:
最佳答案
# 令人困惑的strtotime
https://www.laruence.com/2018/07/31/3207.html
5个月前 评论
讨论数量: 8

你俩一个公司的吧?昨天刚有人问过!

分享创造:php date的坑

5个月前 评论
declandragon (楼主) 5个月前
# 令人困惑的strtotime
https://www.laruence.com/2018/07/31/3207.html
5个月前 评论
zds

别用date了。统一用Carbon时间处理库吧,laravel自带这个库

5个月前 评论

其实也可以用php自己的datetime对象

5个月前 评论

异常那一部分:10月31号,正常按照上一个月的说法,本来应该是9月31号,但是实际上9月没有31号呀,9月的31号不就是相当于10月1号嘛,人家strtotime也没问题啊。
重点还是使用者要会结合实际情况灵活变通

5个月前 评论

稳妥的办法是先取月份1号,再加减月份

5个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!