Rumah > pembangunan bahagian belakang > tutorial php > Mengapakah kod PHP saya tidak menyemak dengan tepat jika tarikh hari ini berada dalam julat tarikh?

Mengapakah kod PHP saya tidak menyemak dengan tepat jika tarikh hari ini berada dalam julat tarikh?

DDD
Lepaskan: 2024-11-26 03:42:07
asal
599 orang telah melayarinya

Why is my PHP code not accurately checking if today's date falls within a date range?

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!";
}
Salin selepas log masuk

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

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

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!

sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan