ホームページ  >  記事  >  バックエンド開発  >  PHP で月の入力として「08」を指定すると、「date('F')」が「12 月」を返すのはなぜですか?

PHP で月の入力として「08」を指定すると、「date('F')」が「12 月」を返すのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-05 09:34:02275ブラウズ

Why Does `date('F')` Return

PHP での数値から月の名前への変換

PHP を使用して月の数値を対応する名前に変換しようとすると、次のコードが表示されます。

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

echo $monthName;</code>

が使用されていましたが、予期された月の名前 (例: August) が返される代わりに、誤って「12 月」が表示されました。さらに調査した結果、$result["month"] が 8 に設定されており、sprintf 関数によって先頭にゼロが追加され、値が「08」となっていることが判明しました。

推奨ソリューション

最新の PHP バージョン (>= 5.2) では、日付/時刻の計算に DateTime オブジェクトを使用する方法が推奨されます。強化されたソリューションは次のとおりです:

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

!書式文字は日付を Unix エポックにリセットし、m 書式文字は先頭にゼロを付けた月の数値を表します。

代替解決策

古い PHP バージョンの場合、別の方法は、mktime() を使用してタイムスタンプを作成することです:

<code class="php">$monthNum  = 3;
$monthName = date('F', mktime(0, 0, 0, $monthNum, 10)); // March</code>

省略した月名 (例: Mar) を使用したい場合は、単に 'F' を 'M' に置き換えるだけです。詳細な書式設定オプションについては、PHP マニュアル ドキュメントを参照してください。

以上がPHP で月の入力として「08」を指定すると、「date('F')」が「12 月」を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。