我有以下PHP代码:

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

echo $monthName;

但它返回的是December而不是August.

$result["month"]等于8,因此sprintf函数将0加到08.

推荐答案

The recommended way to do this:

Nowadays, you should really be using DateTime objects for any date/time math. This requires you to have a PHP version >= 5.2. As shown in Glavić's answer, you can use the following:

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

! formatting character用于将所有内容重置为Unix epoch.m格式字符是月份的数字表示形式,带有前导零.

Alternative solution:

如果您使用的是较旧的PHP版本,目前无法升级,则可以使用此解决方案.

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

如果你想要三个字母的月名,比如Mar,把F改成M.所有可用格式选项的列表可以在the PHP manual documentation中找到.

Php相关问答推荐

调用woocommerce_customer_Save_add动作挂钩时发生致命错误

Yahoo Finance API文件_GET_CONTENTS 429请求太多

致命错误:无法使用简单的php博客重新声明spl_autoload_Register()

如何在不指定symfony列的情况下从数据库中获取行数组

WooCommerce/WordPress:简单的产品属性显示

如何在函数中定位WooCommerce产品循环

Laveel Livewire Get Groupby姓名列表

使用PHP curl的Amazon SP API批处理调用

来自POST请求的(无效)json字符串中的奇怪字符(编码问题)

使用ESI的Symfony Sulu清漆

更改特定产品标签的 Woocommerce 产品名称

在 PHP MySQL 中自动生成账单编号

在 mysql 上的 PDO 中启用自动提交并将自动提交设置为关闭

如何在 php 中获取正确的时间

在WooCommerce中显示 checkout 的高级自定义字段(Advanced Custom Fields)并保存其值

yii2 sql迁移覆盖新更改的记录

PHP 将数组值插入到 csv 列

将变量从中间件传递到控制器 Laravel

Symfony 6 中的入口点 (public/index.php) - 它是如何工作的?

如果 static:: 被解析为B,为什么 PHP 会执行A的方法