Trong ví dụ mã này, chúng tôi đang lấy hai ngày và nhận được sự khác biệt của chúng, mã sau đây có thể được sử dụng để nhận chênh lệch ngày chính xác theo ngày giữa hai ngày
Mã nguồn và đầu ra để nhận số ngày giữa hai ngày
"; ?>
đầu ra
Difference between in two dates : 5 Days
Các chương trình cơ bản PHP »
❮ Tham chiếu ngày/giờ PHP
Thí dụ
Tính toán sự khác biệt giữa hai ngày
$date1=date_create["15-03-2013"];
$date2=date_create["12-12-2013"];
$diff=date_diff[$date1,$date2];
?>
Định nghĩa và cách sử dụng
Hàm date_diff[] trả về sự khác biệt giữa hai đối tượng DateTime
cú pháp
date_diff[datetime1, datetime2, tuyệt đối]
Giá trị tham số
Tham sốMô tảngày giờ1Bắt buộc. Chỉ định một đối tượng DateTimedatetime2Required. Chỉ định một đối tượng DateTimeabsoluteOptional. Chỉ định một giá trị Boolean. TRUE chỉ ra rằng khoảng/chênh lệch PHẢI dương. Mặc định là SAIchi tiết kỹ thuật
Giá trị trả về. Trả về một đối tượng DateInterval khi thành công thể hiện sự khác biệt giữa hai ngày. FALSE trên failPhiên bản PHP. 5. 3+❮ Tham chiếu ngày/giờ PHPĐể trả về tất cả các ngày giữa hai ngày, mã như sau -
Thí dụ
Bản thử trực tiếp
đầu ra
Điều này sẽ tạo ra đầu ra sau−
array[11] { [0]=> string[10] "10-11-2019" [1]=> string[10] "11-11-2019" [2]=> string[10] "12-11-2019" [3]=> string[10] "13-11-2019" [4]=> string[10] "14-11-2019" [5]=> string[10] "15-11-2019" [6]=> string[10] "16-11-2019" [7]=> string[10] "17-11-2019" [8]=> string[10] "18-11-2019" [9]=> string[10] "19-11-2019" [10]=> string[10] "20-11-2019" }
strtotime[] sẽ phân tích mô tả ngày giờ bằng văn bản tiếng Anh thành dấu thời gian Unix [số giây kể từ ngày 1 tháng 1 năm 1970 00. 00. 00 giờ GMT]
60*60*24 là 86400 giây cho 1 ngày
Tại sao không thể sử dụng strtotime[] để tìm chênh lệch ngày?
Số giờ sẽ được tăng và giảm trong thời gian tiết kiệm ánh sáng ban ngày. Vì vậy, kết quả của strtotime
diff sẽ trả về giá trị sai
Trong ví dụ dưới đây, chúng ta sẽ so sánh kết quả của strtotime
và DateTime trên các múi giờ khác nhau
Chúng tôi đã biết strtotime
sẽ trả về giá trị chính xác khi không có múi giờ hoặc múi giờ không tiết kiệm ánh sáng ban ngày
'Châu Á/Kolkata' không có tiết kiệm ánh sáng ban ngày. Vì vậy, kết quả là như nhau
Ví dụ tiếp theo, chúng ta sẽ kiểm tra cùng ngày với múi giờ “America/New_York”
Tiết kiệm ánh sáng ban ngày bắt đầu vào Chủ nhật, ngày 8 tháng 3 năm 2020. Vì vậy, bạn nhận được sai số ngày trong múi giờ 'America/New_York' từ 2020–03–08 đến 2020–03–15
Phần kết luận
Tránh sử dụng strtotime
để tìm sự khác biệt giữa hai ngày. Vì vậy, hãy luôn sử dụng đối tượng
// Output: +12 days
1 và bạn có một kịch bản phức tạp hơn nghĩa là sử dụng thư viện PHP Carbon