Setelah melihat dokumentasi PHP, dua metode DateTime
objek berikut ini sepertinya akan menyelesaikan masalah saya:
- DateTime :: diff : Dapatkan perbedaan dan gunakan itu untuk menentukan mana yang lebih kuno.
- DateTime :: getTimestamp : Dapatkan cap waktu UNIX dan bandingkan.
Kedua metode ini ditandai dalam acara dokumenter sebagai tersedia dalam versi> = 5.3 (dan, tidak mengherankan, jika saya mencoba untuk memanggil mereka saya menemukan mereka tidak ada). Saya tidak dapat menemukan dokumentasi khusus untuk 5.2.8 jadi saya tidak yakin apakah ada metode yang setara dalam versi saya. Saya telah Googled masalah dan menemukan berbagai eklektik solusi, tidak ada yang menjawab kebutuhan saya sangat sederhana:
- Bagaimana cara membandingkan dua objek DateTime?
- Di mana saya dapat menemukan dokumen untuk versi PHP sebelumnya? Khususnya versi 5.2.8?
Untuk beberapa konteks, saya memiliki kode berikut:
$st_dt = new DateTime(verifyParam ('start_date'));
$end_dt = new DateTime(verifyParam ('end_date'));
// is the end date more ancient than the start date?
if ($end_dt < $start_dt)
Rupanya tidak ada operator pembanding pada orang ini.
Edit
Rupanya asumsi saya benar-benar salah (terima kasih Milen untuk menggambarkan ini dengan sangat efektif). Ada operator perbandingan dan itu berfungsi dengan baik terima kasih. Terkadang saya benar-benar kehilangan kompiler. Bug ada dalam kode di atas, saya yakin Anda akan menemukannya jauh lebih cepat daripada yang saya lakukan :).
$_POST
vars Anda , atau anak kucing akan dibunuh.Jawaban:
Berikut ini tampaknya mengonfirmasi bahwa ada operator perbandingan untuk kelas DateTime:
sumber
DateTime
s dengan tanggal yang sama tidak akan dibandingkan dengan yang sama ketika Anda yakin seharusnya. Anda dapat memperbaiki ini dengan secara eksplisit mengatur komponen waktu objek ke nol sebelum membandingkannya.Dari dokumentasi resmi :
Untuk versi PHP sebelum 5.2.2 (sebenarnya untuk versi apa pun), Anda dapat menggunakan diff .
sumber
Anda juga dapat membandingkan detik jaman:
Sumber: http://laughingmeme.org/2007/02/27/looking-at-php5s-datetime-and-datetimezone/ (artikel yang cukup menarik tentang DateTime)
sumber
format
menghasilkan string , jadi itu perbandingan string. Ini bukan masalah setelah masa 1000000000 zaman (kira-kira 9 Sep 2001), tetapi jika Anda harus berurusan dengan tanggal sebelum itu, Anda mungkin mengalami masalah karena panjang nomor yang berbeda. Konversikan hasilnya ke angka (kurangi juga berfungsi), atau gunakan format yang benar-benar dapat disortirc
.Jika Anda ingin membandingkan tanggal dan bukan waktu, Anda dapat menggunakan ini:
sumber
$d1->setTime(0, 0, 0);
Pada PHP 7.x, Anda dapat menggunakan yang berikut:
sumber
sumber
Ini dapat membantu Anda.
sumber
$today = new DateTime("now");
$time = DateTime::createFromFormat('d-m-Y',"26-October-1998");
if ($today > $time){echo "today is greater";}else{echo "other time is greater";}
ceria.