2013-08-23 45 views
5

tôi muốn trừ hai ngày tháng trong phpLàm thế nào để Trừ hai ngày tháng trong php

ví dụ:

$date1 = 08/16/2013; 
$date2 = 08/23/2013; 
$answer = date2 - date1; 

các $ câu trả lời nên là 7, Làm thế nào tôi sẽ làm điều đó? cảm ơn bạn rất nhiều

+0

'$ datetime1 = new DateTime ($ date1); \t \t $ datetime2 = new DateTime ($ date2); \t \t $ days = round (($ datetime1-> format ("U") - $ datetime2-> format ("U"))/86400); 'Nó sẽ trả về số nguyên của ngày. –

Trả lời

13

Bắt đầu sử dụng DateTime lớp cho ngày/giờ thao tác:

$date1 = new DateTime('08/16/2013'); 
$date2 = new DateTime('08/23/2013'); 
$diff = $date1->diff($date2); 
print_r($diff); // or $diff->days 

Output:

DateInterval Object 
(
    [y] => 0 
    [m] => 0 
    [d] => 7 
    [h] => 0 
    [i] => 0 
    [s] => 0 
    [invert] => 0 
    [days] => 7 
) 

Đọc thêm cho DateTime:diff().


Xin lưu ý rằng nhiều strtotime() ví dụ là không chính xác trong tính toán chênh lệch ngày/giờ. Ví dụ đơn giản nhất là sự khác biệt giữa 2013-03-31 21:002013-03-30 21:00. Mà cho mắt thường là chính xác 1 ngày khác biệt, nhưng nếu bạn trừ 2 ngày này, bạn sẽ nhận được 82800 giây là 0.95833333333333 ngày. Điều này là do thời gian thay đổi từ mùa đông đến mùa hè. DateTime xử lý các năm nhuận và múi giờ đúng cách.

+0

làm thế nào tôi sẽ nhận được giá trị? $ diff ['m']? –

+0

Giống như tôi đã đăng trong câu trả lời, nếu bạn muốn ngày khác biệt chỉ nhận được nó như '$ diff-> days'. –

+0

cảm ơn bạn! nó thực sự là một sự giúp đỡ lớn –

-2
$date1 = '08/16/2013'; 
$date2 = '08/23/2013'; 
$days = (strtotime($date2) - strtotime($date1))/(60 * 60 * 24); 
print $days; 
+0

lý do tại sao bạn chia chênh lệch thành (60 * 60 * 24)? và bạn lấy nó ở đâu? –

+0

Sự khác biệt bao nhiêu ngày là từ '2013-03-31 21: 00' đến' 2013-03-30 21: 00' với ví dụ này? –

+0

Đó là câu trả lời. – Yasitha

0

Bạn có thể nhận được với strtotime và trừ ngày

$diff = abs(strtotime('08/16/2013') - strtotime('08/23/2013')); 

echo $min = floor($diff/(60*60*24)); // 7 
+0

lý do tại sao bạn chia chênh lệch thành (60 * 60 * 24)? và bạn lấy nó ở đâu? –

+0

'60 * 60 * 24' là ngày thứ hai. 'diff' kết quả là' 604800' về betweeen hai ngày giây. Bạn phải chia cho ngày. Đầu tiên '60' là min, second' 60' giờ và cuối cùng là '24' trong ngày. Vì vậy, '60 * 60 * 24 = 86400' có nghĩa là một (1) ngày. – Bora

+0

Có bao nhiêu ngày khác biệt từ '2013-03-31 21: 00' đến' 2013-03-30 21: 00' với ví dụ này? –

1

Hãy thử điều này -

<?php 
$date1 = strtotime('08/16/2013'); 
$date2 = strtotime('08/23/2013'); 

echo $hourDiff=round(abs($date2 - $date1)/(60*60*24),0); 
?> 
Các vấn đề liên quan