我有这个 PHP 代码:
$monthNum = sprintf("%02s", $result["month"]); $monthName = date("F", strtotime($monthNum)); echo $monthName;
但它正在返回December而不是August.
December
August
$result["month"]等于 8,所以sprintf函数是添加 a0来制作它08。
$result["month"]
sprintf
0
08
推荐的方法:
如今,您真的应该将 DateTime 对象用于任何日期/时间数学。这要求您的 PHP 版本 >= 5.2。如Glavi膰的答案所示,您可以使用以下内容:
$monthNum = 3; $dateObj = DateTime::createFromFormat('!m', $monthNum); $monthName = $dateObj->format('F'); // March
!格式化字符用于将所有内容重置为Unix epoch。格式字符是月份的m数字表示,带有前导零。
!
m
替代解决方案:
如果您使用的是较旧的 PHP 版本并且目前无法升级,您可以使用此解决方案。函数的第二个参数date()接受一个时间戳,您可以使用它mktime()来创建一个,如下所示:
date()
mktime()
$monthNum = 3; $monthName = date('F', mktime(0, 0, 0, $monthNum, 10)); // March
如果您想要 3 个字母的月份名称Mar,请更改F为M. 可以在PHP 手册文档中找到所有可用格式选项的列表。
Mar
F
M