Anda tidak perlu mengonversi ke stempel waktu untuk melakukan perbandingan, karena string divalidasi sebagai tanggal dalam format kanonis 'YYYY-MM-DD'.
Tes ini akan bekerja:
( ( $date_from_user >= $start_date ) && ( $date_from_user <= $end_date ) )
diberikan:
$start_date = '2009-06-17';
$end_date = '2009-09-05';
$date_from_user = '2009-08-28';
CATATAN: Membandingkan string seperti ini memungkinkan untuk tanggal "tidak valid" misalnya (32 Desember) '2009-13-32' dan untuk string yang diformat aneh '2009/3/3', sehingga perbandingan string TIDAK akan sama dengan perbandingan tanggal atau stempel waktu. Ini HANYA berfungsi jika nilai tanggal dalam string dalam format KONSISTEN dan CANONICAL .
EDIT untuk menambahkan catatan di sini, menguraikan yang sudah jelas.
Dengan CONSISTENT , maksud saya misalnya bahwa string yang dibandingkan harus dalam format yang identik: bulan harus selalu dua karakter, hari harus selalu dua karakter, dan karakter pemisah harus selalu berupa tanda hubung. Kami tidak dapat membandingkan "string" yang bukan empat tahun karakter, dua bulan karakter, dua hari karakter. Jika kami memiliki campuran satu karakter dan dua karakter bulan dalam string, misalnya, kami akan mendapatkan hasil yang tidak terduga saat kami membandingkan, '2009-9-30'
dengan '2009-10-11'
. Kita secara manusiawi melihat "9" sebagai kurang dari "10", tetapi perbandingan string akan melihat '2009-9'
lebih besar dari '2009-1'
. Kami tidak perlu memiliki karakter pemisah tanda hubung; kami juga bisa membandingkan string dengan andal'YYYYMMDD'
format; jika ada karakter pemisah, itu harus selalu ada dan selalu sama.
Yang saya maksud dengan CANONICAL adalah format yang akan menghasilkan string yang akan diurutkan dalam urutan tanggal. Artinya, string akan memiliki representasi "tahun" terlebih dahulu, lalu "bulan", lalu "hari". Kami tidak dapat membandingkan string dalam 'MM-DD-YYYY'
format dengan andal , karena itu tidak kanonik. Perbandingan string akan membandingkan MM
(bulan) sebelum dibandingkan YYYY
(tahun) karena perbandingan string bekerja dari kiri ke kanan.) Manfaat besar dari format string 'YYYY-MM-DD' adalah bahwa format itu kanonik; tanggal yang direpresentasikan dalam format ini dengan andal dapat dibandingkan sebagai string.
[TAMBAHAN]
Jika Anda melakukan konversi stempel waktu php, perhatikan batasannya.
Pada beberapa platform, php tidak mendukung nilai stempel waktu sebelum 01-01 1970 dan / atau lebih dari 2038-01-19. (Itulah sifat integer 32-bit timestamp unix.) Versi yang lebih baru pf php (5.3?) Seharusnya mengatasinya.
Zona waktu juga dapat menjadi masalah, jika Anda tidak berhati-hati menggunakan zona waktu yang sama saat mengonversi dari string ke stempel waktu dan dari stempel waktu kembali ke string.
HTH