2012-10-21 24 views
5

bunu nasıl alabilirimHH: MM biçimindeki zaman farkını yakalayın php

HH: MM biçimi? ben bu gelen ne var

$to_time = strtotime("2008-12-13 10:42:00"); <--AM 
$from_time = strtotime("2008-12-14 8:21:00"); <-- PM 
$stat = round(abs($to_time - $from_time)/60,2). "min"; 

1299 dakika

ama nasıl anlamaya cant o çıktı

21h: Öncelikle 41m

cevap

8

, 8:21:00 sürece saat 8'de olarak yorumlanacaktır aksi halde DateTime::createFromFormat() kullanarak belirtilir.

, zaman farklılıkları çalışmak DateTime::diff() kullanmak için: Bu iki zaman arasındaki saat/dakika farkını gösterecektir

$to = new DateTime("2008-12-13 10:42:00"); 
$from = new DateTime("2008-12-14 8:21:00"); 

$stat = $to->diff($from); // DateInterval object 

echo $stat->format('%Hh:%Im'); 

, fakat sadece 24 saat kadar.

Eğer 24 saatten fazla gerekiyorsa, aşağıdakileri yapmalıdırlar:

Eğer tarih dizeleri AM ve PM eklemeniz gerekir her şeyden
$hours = $stat->days * 24 + $stat->h; 
$minutes = $stat->i; 

printf('%02sh:%sm', $hours, $minutes); 
+0

da $ istatistik nesne [DateInterval bir örneğidir tarihleri ​​ –

+0

arasında 24 saatten fazla olduğunda doğru değeri döndürmez Bu seferki ] (http://au.php.net/DateInterval), gün/ay/yıl ayıklamak için dokümanlar kontrol edin. – Alex

+0

Bu yüzden lütfen günler hakkında herhangi bir bilgi içermediğinden ve yanıltıcı sonuç ürettiğinden "biçim" satırını kaldırın/düzenleyin. –

2

Birincisi, aksi 2008-12-14 8:21:008:21 AM

olarak yorumlanacaktır

Şimdi iki tarih arasındaki fark, 33h: 19m olan 2019, standart tarih biçimlerinde t yapamazsınız, çünkü yalnızca 24 saat destekliyorlar. Sen tamsayı olarak $stat tutmak ve benzeri sprintf ile göstermesi gerekir böyle:

echo sprintf('%02dh:%02dm', $stat/60, $stat%60); 
İlgili konular