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

如何在PHP中实现MySQL Day()与Month()的等价数字返回功能?

解决PHP中获取数字格式日/月的问题

哦,我一眼就看出问题啦!你当前用的date()函数格式参数不对——D和M本来就是用来返回星期缩写(比如Mon)和月份缩写(比如Nov)的,要拿到和MySQL DAY()、MONTH()等价的数字结果,得换成对应的数字格式符才行。

修正后的代码(基于strtotime)

直接修改格式参数就能解决:

$tm = '2020-11-09';
$dt = strtotime($tm);
// 用j返回不带前导零的日(对应MySQL DAY()),比如9
echo $day = date("j", $dt); 
echo "<br><br>";
// 用n返回不带前导零的月(对应MySQL MONTH()),比如11
echo $month = date("n", $dt); 

如果需要带前导零的格式(比如09、11),可以换成这些参数:

  • 日用d:返回09
  • 月用m:返回11

更推荐的DateTime类写法(PHP 5.2+)

现在PHP更推荐使用面向对象的DateTime类,它比strtotime更可靠,尤其是处理复杂日期的时候:

$tm = '2020-11-09';
$date = new DateTime($tm);
// 获取日(不带前导零)
echo $day = $date->format('j'); 
echo "<br><br>";
// 获取月(不带前导零)
echo $month = $date->format('n'); 

格式符对照表

给你列几个常用的日期格式符,方便以后参考:

  • j:月份中的第几天,不带前导零(1-31)→ 对应MySQL DAY()
  • d:月份中的第几天,带前导零(01-31)
  • n:数字表示的月份,不带前导零(1-12)→ 对应MySQL MONTH()
  • m:数字表示的月份,带前导零(01-12)

内容的提问来源于stack exchange,提问作者Nancy Moore

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 19:32:58