我有这个 PHP 代码:
$monthNum = sprintf("%02s", $result["month"]);
$monthName = date("F", strtotime($monthNum));
echo $monthName;
但它返回的是 December
而不是 August
。
$result["month"]
等于 8,所以 sprintf
函数是添加一个 0
使其成为 08
.
最佳答案
推荐的方法:
如今,您确实应该将 DateTime 对象用于任何日期/时间数学。这要求您的 PHP 版本 >= 5.2。如图Glavić's answer ,您可以使用以下内容:
$monthNum = 3;
$dateObj = DateTime::createFromFormat('!m', $monthNum);
$monthName = $dateObj->format('F'); // March
!
formatting character用于将所有内容重置为 Unix epoch . m
格式字符是月份的数字表示,带有前导零。
替代解决方案:
如果您使用的是较旧的 PHP 版本并且目前无法升级,您可以使用此解决方案。
date()
的第二个参数|函数接受时间戳,您可以使用 mktime()
像这样创建一个:
$monthNum = 3;
$monthName = date('F', mktime(0, 0, 0, $monthNum, 10)); // March
如果您想要像 Mar
这样的 3 字母月份名称,请将 F
更改为 M
。所有可用格式选项的列表可以在 the PHP manual documentation 中找到。 .
关于php - 在 PHP 中将数字转换为月份名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18467669/