問題:
月の数値を月の数値に変換するコードを実装しました。 PHP で月名を指定しても、間違った結果が返されます。具体的には、月番号が 8 の場合、コードは「8 月」ではなく「12 月」を返します。
分析:
この問題は、sprintf が関数は月番号の先頭にゼロを追加しており、結果は「8」ではなく「08」になります。これにより、日付関数は入力を先頭に 0 を付けた月の数値表現として解釈します。これは、8 月ではなく 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 バージョンにアップグレードできない場合は、次のコードを使用できます。
<code class="php">$monthNum = 3; $monthName = date('F', mktime(0, 0, 0, $monthNum, 10)); // March</code>
ここで、日付関数の 2 番目のパラメーターはタイムスタンプを受け入れます。 mktime 関数は、指定された月番号と日 (この場合は月の 10 日) を表すタイムスタンプを作成するために使用されます。 3 文字の月名 (例: Mar) を取得するには、F 形式の文字を M に変更します。
追加情報:
PHP マニュアルには包括的なリストが記載されています。日付関数で使用可能なすべての書式設定オプション。
以上が月番号 8 を月の名前に変換すると、PHP コードが「8 月」ではなく「12 月」を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。