在 PHP 中将数字转换为月份名称

2022-08-30 06:33:14

我有这个PHP代码:

$monthNum = sprintf("%02s", $result["month"]);
$monthName = date("F", strtotime($monthNum));

echo $monthName;

但它正在返回而不是.DecemberAugust

$result["month"]等于 8,因此该函数正在添加一个来使其 。sprintf008


答案 1

执行此操作的推荐方法:

如今,您应该真正使用DateTime对象进行任何日期/时间数学运算。这要求您拥有 PHP 版本 >= 5.2。如Glavić的答案所示,您可以使用以下内容:

$monthNum  = 3;
$dateObj   = DateTime::createFromFormat('!m', $monthNum);
$monthName = $dateObj->format('F'); // March

格式字符用于将所有内容重置为 Unix 时代。格式字符是月份的数字表示形式,带有前导零。m

替代解决方案:

如果您使用的是较旧的PHP版本,并且目前无法升级,则可以使用此解决方案。date() 函数的第二个参数接受时间戳,您可以使用 mktime() 创建一个时间戳,如下所示:

$monthNum  = 3;
$monthName = date('F', mktime(0, 0, 0, $monthNum, 10)); // March

如果需要 3 个字母的月份名称,如 ,请更改为 。所有可用格式设置选项的列表可以在 PHP 手册文档中找到。MarFM


答案 2

仅仅因为每个人都在使用strtotime()和date()函数,我将展示DateTime示例:

$dt = DateTime::createFromFormat('!m', $result['month']);
echo $dt->format('F');

推荐