Tính toán ngày trong tương lai hoặc quá khứ

PHP:
Tính toán ngày trong tương lai hoặc quá khứ

Làm Thế Nào:

PHP làm cho phép tính ngày trở nên đơn giản với DateTimeDateInterval. Hãy xem xét điều này:

<?php
// Ngày hôm nay
$today = new DateTime();
echo $today->format('Y-m-d H:i:s') . "\n";

// Thêm 10 ngày
$today->add(new DateInterval('P10D'));
echo $today->format('Y-m-d H:i:s') . "\n";

// Trừ đi 2 tháng
$today->sub(new DateInterval('P2M'));
echo $today->format('Y-m-d H:i:s') . "\n";
?>

Kết quả có thể là:

2023-04-01 12:34:56
2023-04-11 12:34:56
2023-02-11 12:34:56

Tìm Hiểu Sâu Hơn

Ngày xưa, các phép tính ngày trong PHP thường xuyên xảy ra lỗi hơn. strtotime, mặc dù vẫn hữu ích, nhưng có thể gây bối rối với các trường hợp biên. DateTimeDateInterval mang lại độ chính xác và sự rõ ràng theo hướng đối tượng.

Có phương án thay thế không? Chắc chắn rồi. Các thư viện như Carbon bọc chức năng ngày tháng của PHP để tăng tính dễ đọc và tính năng, nhưng trong nhiều trường hợp, các lớp có sẵn của PHP là hoàn toàn ổn.

Bên trong, DateTime::add()DateTime::sub() thay đổi đối tượng, nên không cần phải gán lại. Chúng xử lý các đơn vị thời gian một cách nhất quán, tính đến những vấn đề như năm nhuận và sự thay đổi giờ tiết kiệm ánh sáng, điều này có thể gây đau đầu nếu không.

Xem Thêm