ホームページ >バックエンド開発 >PHPチュートリアル >PHP で月の入力として「08」を指定すると、「date('F')」が「12 月」を返すのはなぜですか?
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 サイトの他の関連記事を参照してください。