เปรียบเทียบวันที่ใน PHP ง่ายถ้ารูปแบบเดียวกัน แต่ล้มเหลวถ้ารูปแบบต่างกัน มีหลายวิธี:
กรณีที่ 1: รูปแบบเดียวกัน
ใช้ comparison operator ตรงๆ
<?php $date1 = "2018-11-24"; $date2 = "2019-03-26"; if ($date1 > $date2) echo "$date1 is latest than $date2"; else echo "$date1 is older than $date2"; ?>
ผลลัพธ์
2019-03-26 is latest than 2018-11-24
กรณีที่ 2: รูปแบบต่างกัน ใช้ strtotime()
แปลงเป็น UNIX timestamp แล้วเปรียบเทียบตัวเลข
<?php $date1 = "18-03-22"; $date2 = "2017-08-24"; $curtimestamp1 = strtotime($date1); $curtimestamp2 = strtotime($date2); if ($curtimestamp1 > $curtimestamp2) echo "$date1 is latest than $date2"; else echo "$date1 is older than $date2"; ?>
ผลลัพธ์
18-03-22 is latest than 2017-08-24
กรณีที่ 3: ใช้ DateTime Class
สร้าง object DateTime แล้วเปรียบเทียบตรงๆ
<?php
$date1 = new DateTime("18-02-24");
$date2 = new DateTime("2019-03-24");
if ($date1 > $date2) echo 'datetime1 greater than datetime2';
if ($date1 < $date2) echo 'datetime1 lesser than datetime2';
if ($date1 == $date2) echo 'datetime2 is equal than datetime1';
?>
ผลลัพธ์
datetime1 lesser than datetime2