PHP iki kez var ve ben geçen saat ve dakika belirlemek istiyorum. Örneğin:
8:30-10:00 01:30 olacaktır
Bir çözüm damgaları için tarih / kere dönüştürmek için strtotime
a> kullanmak olabilir:
$first_str = '8:30';
$first_ts = strtotime($first_str);
$second_str = '10:00';
$second_ts = strtotime($second_str);
Ve sonra, bir fark yok:
$difference_seconds = abs($second_ts - $first_ts);
Ve dakika veya saat içinde sonuç almak:
$difference_minutes = $difference_seconds / 60;
$difference_hours = $difference_minutes / 60;
var_dump($difference_minutes, $difference_hours);
Alırsınız:
int 90
float 1.5
Şimdi ne öğrenmek zorunda olduğunu göstermek için nasıl ;-)
(edit after thinking a bit more)
Farkı göstermek için bir ihtimal date fonksiyonunu kullanıyor olabilirsiniz; böyle bir şey yapmanız gerekir:
date_default_timezone_set('UTC');
$date = date('H:i', $difference_seconds);
var_dump($date);
Ve ben alıyorum:
string '01:30' (length=5)
Yerine "01:30", ben "02:30" başlamıştı, başka - benim sistemde, ben date_default_timezone_set
a> UTC saat dilimini ayarlamak için kullanmak zorunda, unutmayın - Ben Fransa'da yaşıyorum muhtemelen çünkü, ve FR benim sistemin yerel bir ...
Sen çıkarma yapmak, sonra the answer to this question değerleri tamsayı için kat dönüştürmek için kullanabilirsiniz. Oradan üniteleri-saat-dakika bu sonucu dönüştürmek isteyeceksiniz, ama bu çok zor olmamalı.
$d1=date_create()->setTime(8, 30);
$d2=date_create()->setTime(10, 00);
echo $d1->diff($d2)->format("%H:%i:%s");
Yukarıdaki yeni (imsi) DateTime ve DateInterval sınıflarını kullanır. Bu sınıfların önemli avantajları Unix dönemi dışında tarih artık bir sorun ve yaz saati, artık yıl ve diğer çeşitli zaman tuhaflıklar işlenir olduğunu vardır.