最直接获取当前月份是date('m'),返回带前导零的字符串如"03";需数值运算时用date('n')或(int)date('m');务必先设置时区如date_default_timezone_set('asia/shanghai')。

date('m') 是最直接的方式,但要注意它返回的是带前导零的字符串(如 "03"),不是整数;如果需要数值计算或比较,得用 (int) date('m') 或 date('n')。
用 date() 获取当前月份数字
PHP 的 date() 函数配合格式符就能拿到月份:
-
date('m')→ 返回"01"到"12"的两位字符串,适合显示或拼接日期字符串 -
date('n')→ 返回1到12的整数,适合做条件判断、数组索引或数学运算 -
date('M')→ 返回英文缩写("Jan","Feb"),注意受系统 locale 影响,中文环境不一定生效 - 别用
date('F')直接输出中文月份——它默认是英文全称,要中文得配合setlocale()+strftime(),但后者在 Windows 和某些 PHP 版本上不稳定
时区问题常被忽略
如果服务器时区不是你期望的(比如服务器在 UTC,你在东八区),date() 会返回错误的月份。必须显式设置:
- 全局设置:
date_default_timezone_set('Asia/Shanghai');(推荐放在脚本开头) - 临时获取其他时区:
date('m', strtotime('now', new DateTimeZone('Asia/Shanghai')))太绕,不如先设时区再调date() - 检查当前时区:
date_default_timezone_get(),避免依赖 php.ini 默认值
需要年月组合?别拼字符串
想得到 "2024-03" 这种格式,直接用 date('Y-m'),而不是 $year . '-' . $month。原因:
-
date('Y-m')自动补零,date('Y-n')不补零,按需选 - 避免手动处理跨年逻辑(比如 1 月的上个月是去年 12 月)——真要算上个月,用
date('Y-m', strtotime('-1 month'))更可靠 - 注意
strtotime('-1 month')在 31 号可能回退到当月 1 号(如 3 月 31 日减一个月得 3 月 1 日),有业务精度要求时得用DateTime类
真正容易出错的不是“怎么写”,而是没确认时区、混淆字符串和整数类型、以及对 strtotime() 边界行为缺乏测试。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











