Tarih arasındaki fark

3 Cevap php

Ben şimdiki zamanı bir tanesi iki kat arasındaki farkı hesaplamak istiyorum, ve diğer adil biçimde HH şöyledir: MM, her zaman gelecekte.

Ben sadece şimdi $ dan $ futuretime çıkarırsanız, bu, elbette, pozitif bir sayı olmalıdır.

Bu kadar iyi çalışır ...

Şimdi $ öğleden sonra ya da akşam ve $ futuretime, diyelim, 07:00 Ertesi sabah ise, nasıl o zaman hep gelecekte olacak anlamak için zorlayabilirsiniz?

(Bu çalışma saatlerinde yaklaşık her yarım saatte bir gerçekleşen bir şeyin zamanını çalışma dışarı için, ve sonra ertesi sabaha kadar durur)

Şimdiden teşekkürler!

3 Cevap

Negatif olması durumunda, sadece fark için bir gün ekleyin. : $now ve $futuretime (gece yarısından itibaren saniye olarak saklanır) damgaları vardır, sadece aşağıdaki varsayarak

$diff = $futuretime - $now;
if ($diff < 0)
    $diff += 24 * 3600;

: Onlar HH:MM biçiminde ise

list($future_hours, $future_mins) = explode(":", $futuretime);
$futuretime = $future_hours * 60 + $future_mins;
list($now_hours, $now_mins) = explode(":", $now);
$now = $now_hours * 60 + $now_mins;
$diff = $futuretime - $now;
if ($diff < 0)
    $diff += 24 * 60;

Tabii ikinci durumda dakikada farkı döndürür, eski döner saniye içinde fark ederken.

Edit: Andy yorumların aşağıda belirtildiği gibi DST değişiklikleri umurumda eğer, bu iyi bir çözüm değildir. Daha iyi bir yaklaşım için onun çözümü bakın.

Eğer PHP 5.3 + iseniz, PHP'nin kullanmak DateTime:

$d1 = new DateTime('14:52:10');
$d2 = new DateTime('12:12:10');

$diff = $d1->diff( $d2 ); 
var_dump( $diff );

Siz sadece timestamp hem tarih dönüştürmek hesaplamaları yapmak ve gerekli biçime, yani gün, saat ve dakika dönüştürebilirsiniz. oldukça basit.