PHP で数値を月名に変換する
sprintf と date の組み合わせを使用して、月の数値を対応する名前に変換しようとする場合関数を使用すると、出力に意図した月ではなく 12 月が表示されるという予期せぬ問題が発生する可能性があります。
問題:
提供されたコード $monthNum = sprintf(" s", $result["月"]); $monthName = date("F", strtotime($monthNum)); は、月の数値に誤って先行ゼロを追加します。これにより、日付関数は結果の値を目的の月ではなく 12 月として解釈します。
解決策:
推奨されるアプローチ:
推奨される解決策は、日付と時刻の計算に DateTime オブジェクトを利用することです。 PHP バージョン 5.2 以降では、次のコードを使用できます。
<code class="php">$monthNum = 3; $dateObj = DateTime::createFromFormat('!m', $monthNum); $monthName = $dateObj->format('F'); // March</code>
!書式設定文字はすべての値を Unix エポックにリセットし、m 形式は先頭にゼロを付けて月の数値表現を表します。
代替解決策 (古い PHP バージョン用):
PHP バージョン 5.2 より前の場合、mktime 関数を使用してタイムスタンプを作成し、それを 2 番目のパラメーターとして date 関数に渡すことができます:
<code class="php">$monthNum = 3; $monthName = date('F', mktime(0, 0, 0, $monthNum, 10)); // March</code>
ここで、mktime は初日のタイムスタンプを作成します。指定された月の。関数内の 10 を月内の希望の日に調整します。
これらのソリューションを採用することで、月の数値を PHP の対応する名前に正しく変換できます。
以上がPHP コードが月番号を正しい月ではなく 12 月に変換するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。