PHP:
การคำนวณวันที่ในอนาคตหรืออดีต
วิธีการ:
PHP ทำให้การคำนวณวันที่เป็นเรื่องง่ายด้วย DateTime
และ DateInterval
ลองดูสิ:
<?php
// วันที่ของวันนี้
$today = new DateTime();
echo $today->format('Y-m-d H:i:s') . "\n";
// เพิ่ม 10 วัน
$today->add(new DateInterval('P10D'));
echo $today->format('Y-m-d H:i:s') . "\n";
// ลบออก 2 เดือน
$today->sub(new DateInterval('P2M'));
echo $today->format('Y-m-d H:i:s') . "\n";
?>
ผลลัพธ์อาจเป็น:
2023-04-01 12:34:56
2023-04-11 12:34:56
2023-02-11 12:34:56
การศึกษาลึก
สมัยก่อน, การคำนวณวันที่ใน PHP มีแนวโน้มที่จะผิดพลาดมากขึ้น strtotime
แม้จะยังมีประโยชน์, แต่ก็อาจทำให้คุณต้องเจอกับกรณีพิเศษที่ยาก DateTime
และ DateInterval
นำมาซึ่งความแม่นยำและความชัดเจนแบบวัตถุ
มีทางเลือกหรือไม่? แน่นอน ไลบรารีเช่น Carbon ห่อหุ้มฟังก์ชันวันที่ของ PHP เพื่อการอ่านที่ง่ายขึ้นและคุณสมบัติเพิ่มเติม แต่สำหรับหลาย ๆ กรณี คลาสที่มีใน PHP เองก็ทำได้ดีอยู่แล้ว
ภายใน, DateTime::add()
และ DateTime::sub()
จะเปลี่ยนแปลงวัตถุ, ดังนั้นไม่จำเป็นต้องมีการกำหนดใหม่ พวกเขาจัดการหน่วยเวลาอย่างต่อเนื่อง, พิจารณาสิ่งต่าง ๆ เช่นปีอธิกสุรทินและการเปลี่ยนแปลงเวลาออมแสง ซึ่งอาจเป็นปัญหาใหญ่หลังจากนั้น
ดูเพิ่มเติม
- คู่มือ PHP เกี่ยวกับ DateTime: https://www.php.net/manual/en/class.datetime.php
- เอกสารเกี่ยวกับ DateInterval: https://www.php.net/manual/en/class.dateinterval.php
- Carbon: API ส่วนขยายที่ง่ายสำหรับ DateTime - https://carbon.nesbot.com