Rumah  >  Artikel  >  pangkalan data  >  Mengapa Kod PHP Saya Kembali 1970-01-01 Apabila Menukar Tarikh dd/mm/yyyy dalam URL?

Mengapa Kod PHP Saya Kembali 1970-01-01 Apabila Menukar Tarikh dd/mm/yyyy dalam URL?

Patricia Arquette
Patricia Arquetteasal
2024-11-06 04:26:02958semak imbas

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

Menukar Tarikh dalam URL daripada dd/mm/yyyy kepada YYYY-MM-DD

Dalam PHP, anda telah menyediakan kod yang cuba menukar tarikh dalam format dd/mm/yyyy kepada format YYYY-MM-DD. Walau bagaimanapun, anda telah menghadapi isu di mana penukaran mengembalikan nilai yang tidak dijangka pada 1970-01-01.

Masalah dengan strtotime()

Masalahnya terletak pada penggunaan PHP strtotime( ) fungsi. Apabila menghuraikan tarikh dalam format dd/mm/yyyy, strtotime() menganggap bahawa dua digit pertama mewakili bulan (mm), dan dua digit seterusnya mewakili hari (dd). Contohnya, 20/02/2000 akan ditafsirkan sebagai 20 Februari 2000.

Walau bagaimanapun, dalam kes anda, tarikh dalam URL adalah dalam format hari/bulan/tahun (hh/mm/yyyy) . Ini bermakna dua digit pertama mewakili hari, dan dua digit seterusnya mewakili bulan. Akibatnya, strtotime() menyalahtafsir tarikh dan mengembalikan nilai yang salah.

Penyelesaian Menggunakan DateTime::createFromFormat()

Untuk menyelesaikan isu ini, adalah disyorkan untuk menggunakan DateTime:: kaedah createFromFormat() bukannya strtotime(). Kaedah ini membolehkan anda menentukan format tepat rentetan tarikh, memastikan ia dihuraikan dengan betul. Berikut ialah versi kod anda yang dikemas kini:

<code class="php">$date = $date1 = DateTime::createFromFormat('d/m/Y', '20/02/2000');
$D->query = $date->format('Y-m-d'); // 2000-02-20</code>

Dengan menggunakan DateTime::createFromFormat(), anda boleh menukar tarikh dalam URL dengan tepat kepada format YYYY-MM-DD.

Pertimbangan Tambahan

Untuk mengelakkan isu yang sama pada masa hadapan, adalah penting untuk memformat tarikh dengan betul dalam URL. Jika anda menghantar tarikh dalam format dd/mm/tttt, pastikan dua digit pertama mewakili hari dan dua digit seterusnya mewakili bulan. Sebagai alternatif, pertimbangkan untuk menggunakan format yang lebih standard seperti YYYY-MM-DD.

Atas ialah kandungan terperinci Mengapa Kod PHP Saya Kembali 1970-01-01 Apabila Menukar Tarikh dd/mm/yyyy dalam URL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn