ホームページ > データベース > mysql チュートリアル > URL の dd/mm/yyyy 日付を変換すると、PHP コードが 1970-01-01 を返すのはなぜですか?

URL の dd/mm/yyyy 日付を変換すると、PHP コードが 1970-01-01 を返すのはなぜですか?

Patricia Arquette
リリース: 2024-11-06 04:26:02
オリジナル
1058 人が閲覧しました

Why Does My PHP Code Return 1970-01-01 When Converting dd/mm/yyyy Dates in URLs?

URL の日付を dd/mm/yyyy から YYYY-MM-DD に変換する

PHP で、次の形式の日付を変換しようとするコードが提供されました。 dd/mm/yyyy を YYYY-MM-DD 形式に変換します。ただし、変換によって予期しない値 1970-01-01 が返されるという問題が発生しました。

strtotime() の問題

問題は、PHP strtotime() の使用にあります。 ) 関数。 dd/mm/yyyy 形式の日付を解析する場合、strtotime() は、最初の 2 桁が月 (mm) を表し、次の 2 桁が日 (dd) を表すと想定します。たとえば、20/02/2000 は 2000 年 2 月 20 日として解釈されます。

ただし、この場合、URL の日付は日/月/年の形式 (dd/mm/yyyy) です。 。これは、最初の 2 桁が日を表し、次の 2 桁が月を表すことを意味します。その結果、strtotime() は日付を誤って解釈し、間違った値を返します。

DateTime::createFromFormat() を使用した解決策

この問題を解決するには、DateTime:: を使用することをお勧めします。 strtotime() の代わりに createFromFormat() メソッドを使用します。このメソッドを使用すると、日付文字列の正確な形式を指定して、日付文字列が正しく解析されるようにすることができます。コードの更新バージョンは次のとおりです。

<code class="php">$date = $date1 = DateTime::createFromFormat('d/m/Y', '20/02/2000');
$D->query = $date->format('Y-m-d'); // 2000-02-20</code>
ログイン後にコピー

DateTime::createFromFormat() を使用すると、URL 内の日付を YYYY-MM-DD 形式に正確に変換できます。

その他の考慮事項

今後の同様の問題を防ぐには、URL 内の日付の形式を正しく設定することが重要です。日付を dd/mm/yyyy 形式で渡す場合は、最初の 2 桁が日を表し、次の 2 桁が月を表すことを確認してください。あるいは、YYYY-MM-DD などのより標準化された形式を使用することを検討してください。

以上がURL の dd/mm/yyyy 日付を変換すると、PHP コードが 1970-01-01 を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート