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

如何在PHP中从月-年字符串(08-2022)获取月份名称?

解决「08-2022」转「Aug-2022」的PHP日期格式问题

先明确你之前代码的问题:

  • 第一个写法中,08-2022未加引号,PHP会将其视为数值运算(08是无效八进制,实际解析为8,8-2022=-2014),且date的格式参数用了m-Y(这是原格式,不是你需要的月份缩写格式,正确应为M-Y);另外strtotime直接处理"08-2022"可能会误判为「日-年」,导致解析错误。
  • 第二个写法完全错误:date()是函数而非对象,不能链式调用format方法,参数逻辑也完全颠倒。

以下是两种正确的处理方式:

方法一:使用DateTime类(推荐)

DateTime类可精准指定输入格式,避免解析歧义:

$dateStr = '08-2022';
$date = DateTime::createFromFormat('m-Y', $dateStr);
echo $date->format('M-Y'); // 输出 Aug-2022

createFromFormat明确告知PHP输入为「月-年」格式,再通过format('M-Y')输出月份缩写加年份的目标格式。

方法二:strtotime配合date(需调整输入格式)

若要使用strtotime,需先将输入转为它能正确识别的格式,比如拼接成「年-月-日」:

$dateStr = '08-2022';
list($month, $year) = explode('-', $dateStr);
echo date('M-Y', strtotime("$year-$month-01")); // 输出 Aug-2022

先拆分月份和年份,拼成标准日期格式让strtotime正确解析,再输出目标格式。

内容的提问来源于stack exchange,提问作者Rajib Bin Alam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 23:48:24