PHP中如何获取下个月的第X天?含strtotime()使用问题
如何用strtotime()获取下个月的第4天?
你遇到的问题确实是strtotime的日期解析优先级导致的:'first day of next month'属于锚点式相对日期格式,优先级高于后续的'+4 days'偏移指令,解析器会先定位到下个月第一天,直接忽略了后面的天数偏移。
下面是几种可行的解决方案:
方案1:直接指定下个月第4天(最直观)
用'4th day of next month'直接让strtotime定位到目标日期:
$fourthDayNextMonth = strtotime('4th day of next month'); echo date('Y-m-d', $fourthDayNextMonth);
方案2:拆分两步解析(避免优先级冲突)
先获取下个月第一天,再基于这个时间点添加3天(1号加3天即为4号):
$firstDay = strtotime('first day of next month'); $fourthDay = strtotime('+3 days', $firstDay); echo date('Y-m-d', $fourthDay);
方案3:使用DateTime类(更健壮,推荐)
DateTime类的日期操作逻辑更清晰,也更容易维护:
// 链式调用写法 $date = (new DateTime())->modify('first day of next month')->modify('+3 days'); echo $date->format('Y-m-d'); // 分步写法 $date = new DateTime(); $date->modify('first day of next month'); $date->add(new DateInterval('P3D')); // P3D代表3天的时间间隔 echo $date->format('Y-m-d');
内容的提问来源于stack exchange,提问作者Isuru Nuwanthilaka
相关产品推荐
相关产品推荐

