Menyemak Julat Tarikh dalam PHP
Dalam PHP, anda mungkin menghadapi situasi di mana anda perlu menentukan sama ada tarikh tertentu berada dalam julat tarikh. Ini biasanya digunakan dalam aplikasi untuk semakan atau penjadualan kesahihan.
Soalan:
Anda menghadapi isu semasa cuba menyemak sama ada tarikh hari ini terletak di antara dua tarikh kontrak menggunakan kod berikut:
$paymentDate = date('d/m/Y'); $contractDateBegin = date('d/m/Y', '01/01/2001'); $contractDateEnd = date('d/m/Y', '01/01/2015'); if ($paymentDate > $contractDateBegin && $paymentDate < $contractDateEnd) { echo "is between"; } else { echo "NO GO!"; }
Walau bagaimanapun, kod ini tidak berfungsi seperti yang diharapkan, jadi anda tidak pasti apa yang anda terlepas.
Jawapan:
Satu ralat penting dalam kod yang disediakan ialah format tarikh yang salah digunakan untuk $paymentDate. Untuk membandingkan tarikh dengan berkesan, adalah penting untuk menukar tarikh tersebut kepada format yang konsisten, yang biasanya format "TTTT-MM-DD". Untuk mencapai matlamat ini, anda boleh menggunakan fungsi strtotime():
$paymentDate = date('Y-m-d'); $paymentDate = date('Y-m-d', strtotime($paymentDate));
Selain itu, untuk memastikan tarikh hari ini dipertimbangkan dalam julat, gunakan >= dan <= bukannya > dan <. Ini kerana kod anda pada masa ini mengecualikan hari terakhir julat.
Kod yang diperbetulkan di bawah harus berfungsi dengan betul untuk menyemak sama ada tarikh hari ini jatuh di antara tarikh kontrak:
$paymentDate = date('Y-m-d'); $paymentDate = date('Y-m-d', strtotime($paymentDate)); //echo $paymentDate; // echos today! $contractDateBegin = date('Y-m-d', strtotime("01/01/2001")); $contractDateEnd = date('Y-m-d', strtotime("01/01/2012")); if (($paymentDate >= $contractDateBegin) && ($paymentDate <= $contractDateEnd)) { echo "is between"; } else { echo "NO GO!"; }</strong>
Nota: Jika kod asal anda menggunakan format tarikh yang berbeza (cth., "dd/mm/YYYY"), pastikan anda menukarnya kepada "YYYY-MM-DD" menggunakan strtotime() berfungsi untuk memastikan perbandingan yang tepat.
Atas ialah kandungan terperinci Mengapakah kod PHP saya tidak menyemak dengan tepat jika tarikh hari ini berada dalam julat tarikh?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!