PHP で、次の形式の日付を変換しようとするコードが提供されました。 dd/mm/yyyy を YYYY-MM-DD 形式に変換します。ただし、変換によって予期しない値 1970-01-01 が返されるという問題が発生しました。
問題は、PHP strtotime() の使用にあります。 ) 関数。 dd/mm/yyyy 形式の日付を解析する場合、strtotime() は、最初の 2 桁が月 (mm) を表し、次の 2 桁が日 (dd) を表すと想定します。たとえば、20/02/2000 は 2000 年 2 月 20 日として解釈されます。
ただし、この場合、URL の日付は日/月/年の形式 (dd/mm/yyyy) です。 。これは、最初の 2 桁が日を表し、次の 2 桁が月を表すことを意味します。その結果、strtotime() は日付を誤って解釈し、間違った値を返します。
この問題を解決するには、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 サイトの他の関連記事を参照してください。