การเปรียบเทียบสตริงวันที่ใน PHP
สมมติว่าเรามีวันที่สองวันที่ในรูปแบบข้อความ ต่อไปนี้:
<?php
$date1 = '2020-12-01';
$date2 = '2019-12-01';
?>
ในกรณีนี้ เราสามารถทำการเปรียบเทียบ วันที่เหล่านี้และค้นหาว่าวันที่ใดมีค่ามากกว่า:
<?php
var_dump($date1 > $date2);
?>
การเปรียบเทียบวันที่เหล่านี้เกิดขึ้นได้อย่างไร? ความจริงคือวันที่ของเราเป็น สตริงและ PHP เปรียบเทียบพวกมันเป็นสตริง นั่นคือมันเปรียบเทียบตัวอักษรตัวแรกของ วันที่ทั้งสองก่อน: ถ้าพวกมันเหมือนกัน PHP จะเปรียบเทียบตัวอักษรตัวที่สอง และต่อๆไป จนกระทั่ง พบความแตกต่าง เนื่องจากใน รูปแบบวันที่ของเราเรียงลำดับเป็นปีก่อน จากนั้นเป็นเดือน และตามด้วยวัน จึงทำให้ การเปรียบเทียบแบบนี้เป็นไปได้
สิ่งสำคัญอีกอย่างคือวันที่ต้องอยู่ในรูปแบบเดียวกัน ในกรณีของเรา ตัวคั่นส่วนของวันที่คือ เครื่องหมายขีดกลาง นี่ไม่ใช่ข้อบังคับแน่นอน ตัวอย่างเช่น สามารถใช้จุดแทนได้:
<?php
$date1 = '2020.12.01';
$date2 = '2019.12.01';
?>
หรือไม่ต้องมีตัวคั่นเลย:
<?php
$date1 = '20201201';
$date2 = '20191201';
?>
สิ่งที่สำคัญที่สุด เพื่อให้การเปรียบเทียบถูกต้อง, การจัดวางต้องเป็นดังนี้: เริ่มต้นด้วย ปี, ตามด้วยเดือน, แล้วจึงเป็นวัน
เขียนโค้ดที่เปรียบเทียบวันที่สองวันที่ระบุ ด้านล่างและแสดงข้อความว่าวันที่ ใดมีค่ามากกว่า:
$date1 = '2020-11-30';
$date2 = '2020-12-01';