ホームページ  >  記事  >  バックエンド開発  >  月番号 8 を月の名前に変換すると、PHP コードが「8 月」ではなく「12 月」を返すのはなぜですか?

月番号 8 を月の名前に変換すると、PHP コードが「8 月」ではなく「12 月」を返すのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-05 10:51:02829ブラウズ

Why is my PHP code returning

PHP で数値を月の名前に変換する

問題:

月の数値を月の数値に変換するコードを実装しました。 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 サイトの他の関連記事を参照してください。

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