You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP日期相对格式技术问询:如何获取指定月份的20日?

解决PHP Date Relative Formats获取当月20日的问题

嘿,这个场景我之前开发的时候也踩过坑!咱们先来直接说解决方案,再聊为什么你原来的写法不行。

正确的单次调用写法

你完全可以不用两次modify(),直接用更精准的相对格式就能一步到位:

  • 获取当前月份的20日:
$currentMonth20th = new DateTime('20th day of this month');
// 或者用strtotime实现
$currentMonth20thStr = date('Y-m-d', strtotime('20th day of this month'));
  • 如果是指定日期对应的月份20日(比如给定2024-03-15,要得到2024-03-20):
$targetDate = new DateTime('2024-03-15');
$targetMonth20th = $targetDate->modify('20th day of this month');

为什么你原来的写法失效?

你用的"first day of this month +20 days"其实是格式组合的问题——PHP的日期解析器在处理first day of...这类锚点式格式时,后面的偏移量(+20 days)不会被正确叠加。这类锚点格式会强制将日期定位到指定的锚点位置,后续的偏移参数会被忽略(不同PHP版本可能有细微差异,但大部分场景下都会出现这个问题)。

所以不用纠结两次调用,换用20th day of this month这种直接指向目标日期的相对格式,就能一次达到需求啦。

内容的提问来源于stack exchange,提问作者Artur Smolen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:37:32