So sánh ngày dễ dàng khi cùng định dạng. Khác định dạng cần chuẩn hóa.
Trường hợp 1: Cùng định dạng (YYYY-MM-DD)
So sánh chuỗi trực tiếp được (lexicographical order = chronological).
<?php
$d1 = "2018-11-24"; $d2 = "2019-03-26";
echo ($d1 > $d2) ? "$d1 mới hơn" : "$d1 cũ hơn"; // 2018-11-24 cũ hơn
?>
Trường hợp 2: Khác định dạng -> strtotime()
Chuyển về Unix timestamp (số giây) rồi so sánh số.
<?php
$d1 = "18-03-22"; $d2 = "2017-08-24";
$t1 = strtotime($d1); $t2 = strtotime($d2);
echo ($t1 > $t2) ? "$d1 mới hơn" : "$d1 cũ hơn"; // 18-03-22 mới hơn
?>
Trường hợp 3: DateTime Object (Khuyên dùng, PHP 5.2+)
Object DateTime hỗ trợ so sánh trực tiếp bằng > < ==.
<?php
$dt1 = new DateTime("18-02-24");
$dt2 = new DateTime("2019-03-24");
if ($dt1 > $dt2) echo "dt1 > dt2";
elseif ($dt1 < $dt2) echo "dt1 < dt2"; // dt1 < dt2
else echo "equal";
?>
DateTime xử lý múi giờ, định dạng linh hoạt, an toàn hơn strtotime().