Rumah > Artikel > pangkalan data > Mengapa Kod PHP Saya Kembali 1970-01-01 Apabila Menukar Tarikh dd/mm/yyyy dalam URL?
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.
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.
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.
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!