如何在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)→ 对应MySQLDAY()d:月份中的第几天,带前导零(01-31)n:数字表示的月份,不带前导零(1-12)→ 对应MySQLMONTH()m:数字表示的月份,带前导零(01-12)
内容的提问来源于stack exchange,提问作者Nancy Moore
相关产品推荐
相关产品推荐

