Rumah > pangkalan data > tutorial mysql > 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
Lepaskan: 2024-11-06 04:26:02
asal
1149 orang telah melayarinya

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>
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan