PHP strtotime 的 BUG

这篇博客探讨了PHP中strtotime()函数在处理跨月情况时可能出现的问题,特别是涉及不同天数的月份。从PHP5.3开始,引入了'firstdayof'和'lastdayof'修正短语,能够智能判断月份的第一天和最后一天,从而避免了日期计算的不准确。例如,使用'lastdayof-1month'和'firstdayof+1month'可以正确获取上个月的最后一天和下个月的第一天。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

strtotime('+1 month'),strtotime('-1 month') 碰到一个月中有28, 31天的就会有问题,比如 strtotime('+1 month', strtotime('2019-10-31')) 就会跳到 12月份去,而不是11月份;

从 PHP5.3 开始呢,date 新增了一系列修正短语,来明确这个问题,那就是”first day of” 和 “last day of” 解决了

strtotime('last day of -1 month')
strtotime("first day of +1 month")

可以智能的判断一个月份的最后一天是几号(28/29/30/31)

echo date("Y-m-d", strtotime("2017-02 first day of")).'<br>';     //2017-02-01
echo date("Y-m-d", strtotime("2017-02 last day of")).'<br>';      //2017-02-28
echo date("Y-m-d", strtotime("2017-05 last day of")).'<br>';      //2017-05-31
echo date("Y-m-d", strtotime("first day of")).'<br>';             //2021-06-01
echo date("Y-m-d", strtotime("last day of")).'<br>';              //2021-06-30

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值