Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> PHP

So sánh ngày tháng (Date Comparison) trong PHP

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().