Bagaimana saya bisa membandingkan dua tanggal dalam PHP?
Tanggal disimpan dalam database dengan format berikut
2011-10-2
Jika saya ingin membandingkan tanggal hari ini dengan tanggal di database untuk melihat mana yang lebih besar, bagaimana cara melakukannya?
Saya mencoba ini,
$today = date("Y-m-d");
$expire = $row->expireDate //from db
if($today < $expireDate) { //do something; }
tapi sebenarnya tidak seperti itu. Apa cara lain untuk melakukannya?
Jawaban:
Simpan dalam YYYY-MM-DD dan kemudian perbandingan string akan berfungsi karena '1'> '0', dll.
sumber
2016-03-27 11:59:47 ::: 2016-03-14 10:30:00
?Jika semua tanggal Anda posterior tanggal 1 Januari 1970, Anda dapat menggunakan sesuatu seperti:
Jika Anda menggunakan PHP 5> = 5.2.0, Anda dapat menggunakan kelas DateTime:
Atau sesuatu seperti ini.
sumber
1st of January of 1970
hanya berlaku untuk versi lama PHP yang berjalan di Windows dan tidak pernah menjadi masalah di Unix.strtotime
akan mengembalikan false untuk tanggal yang lebih besar. stackoverflow.com/questions/2012589/…DateTime
metode tersebut adalah metode yang disukai. Objek itu dapat melakukan lebih dari yangstrtotime
pernah bisa dilakukan.new DateTime('now')
juga bekerja untuk mengambil tanggal hari iniSekadar memuji jawaban yang sudah diberikan, lihat contoh berikut:
Perbarui: Atau gunakan fungsi tanggal sekolah tua () sederhana :
sumber
Saya tidak akan melakukan ini dengan PHP. Database harus tahu, hari apa hari ini. (Gunakan MySQL-> NOW () misalnya), sehingga akan sangat mudah untuk membandingkan dalam Query dan mengembalikan hasilnya, tanpa masalah tergantung pada Jenis Tanggal yang digunakan
sumber
sumber
Berikut cara untuk mengetahui perbedaan antara dua tanggal dalam hitungan menit.
sumber
Anda dapat mengubah tanggal menjadi stempel waktu UNIX dan membandingkan perbedaannya dalam hitungan detik.
sumber
Saya memiliki masalah itu juga dan saya menyelesaikannya dengan:
sumber
Inilah putaran saya tentang cara mendapatkan perbedaan hari antara dua tanggal dengan PHP. Perhatikan penggunaan '!' dalam format untuk membuang bagian waktu dari tanggal, berkat info dari DateTime createFromFormat tanpa waktu .
sumber
Temukan jawabannya di blog dan sesederhana itu:
Dan Anda akan mendapatkan hari-hari di antara 2 tanggal tersebut.
sumber
Ini berfungsi karena logika perbandingan string PHP. Cukup Anda dapat memeriksa ...
Kedua tanggal harus dalam format yang sama. Digit harus diisi nol ke kiri dan diurutkan dari yang paling signifikan hingga paling tidak signifikan.
Y-m-d
danY-m-d H:i:s
memenuhi kondisi ini.sumber
d-m-Y
tidak akan bekerja ..Y-m-d
(dengan nol seperti 2016-05-08) akan bekerja. Periksa tanggal-tanggal tersebut dalamd-m-Y
format01-10-2016
dan20-02-2016
, bandingkan sebagai string 0 <2, itu akan berhenti membandingkan tetapi salah ...2011-10-2
.Jika Anda ingin tanggal ($ date) kedaluwarsa dalam beberapa interval misalnya tanggal kedaluwarsa token saat melakukan pengaturan ulang kata sandi, berikut cara Anda melakukannya:
Tetapi dalam kasus Anda, Anda dapat melakukan perbandingan seperti berikut:
sumber
requestDate()
yang dilakukan metode magis Anda - tidak ada yang menyebutkannya di mana pun. Saya tidak akan menggunakan jawaban Anda, atau menyarankan peneliti manapun untuk menggunakan solusi Anda. Saya tidak melihat diri saya mengubah pilihan saya.pertama-tama, coba berikan format yang Anda inginkan ke waktu tanggal saat ini dari server Anda:
Dapatkan waktu tanggal sekarang
$ current_date = getdate ();
Pisahkan tanggal dan waktu untuk mengelolanya sesuai keinginan:
$ current_date_only = $ current_date [tahun] .'- '. $ current_date [mon] .'-'. $ current_date [mday]; $ current_time_only = $ current_date ['jam']. ':'. $ current_date ['menit']. ':'. $ current_date ['detik'];
Bandingkan itu tergantung jika Anda menggunakan tanggal atau waktu donly di DB Anda:
$ today = $ current_date_only. ' '. $ current_time_only;
atau
$ hari ini = $ current_date_only;
if ($ today <$ expireDate)
semoga membantu
sumber