2011-10-28 28 views
18

Got làm việc này trên php 5,3Time diff trong vài phút giữa 2 ngày

$datetime1 = new DateTime("2011-10-10 10:00:00"); 
$datetime2 = new DateTime("2011-10-10 10:45:00"); 
$interval = $datetime1->diff($datetime2); 
$hours = $interval->format('%h'); 
$minutes = $interval->format('%i'); 
echo 'Diff. in minutes is: '.($hours * 60 + $minutes); 

Làm thế nào tôi có thể làm cho nó hoạt động trên php 5.2? có chức năng tương đương nào không ??

Got nó làm việc

$date1 = "2011-10-10 10:00:00"; 
$date2 = "2011-10-10 10:11:00"; 
echo round((strtotime($date2) - strtotime($date1)) /60); 

Trả lời

41

Thay vì DateTime bạn có thể sử dụng strtotimedate:

$datetime1 = strtotime("2011-10-10 10:00:00"); 
$datetime2 = strtotime("2011-10-10 10:45:00"); 
$interval = abs($datetime2 - $datetime1); 
$minutes = round($interval/60); 
echo 'Diff. in minutes is: '.$minutes; 
+1

Tôi nghĩ rằng việc sử dụng $ interval/60 là tốt nhất để có được số phút. "ngày ('i', ...)" sẽ giới hạn ở 59 phút. –

+0

Cảm ơn, đã tìm thấy giải pháp khác .. vui lòng xem cập nhật của tôi – sam

+0

Đó là giải pháp tương tự sau khi tôi chỉnh sửa và đề xuất @JaisonErick. ;-) – hsz

0

Nếu bạn cần những phút kéo dài vài ngày bạn có thể thêm cái này vào hỗn hợp:

$days = $interval->format("%d"); 

if ($days > 0) { 
    return ($hours * 60 + $minutes) + ($days * 24 * 60); 
} 
1

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

function time_Diff_Minutes($startTime, $endTime) { 
     $to_time = strtotime($endTime); 
     $from_time = strtotime($startTime); 
     $minutes = ($to_time - $from_time)/60; 
     return ($minutes < 0 ? 0 : abs($minutes)); 

} 
echo time_Diff_Minutes("2008-12-13 20:00:00","2008-12-14 08:00:00"); //output 720 
echo time_Diff_Minutes("2008-12-14 20:00:00","2008-12-13 08:00:00"); //output 0 (startTime > endTime) Ternary will return 0 
Các vấn đề liên quan