2013-07-13 8 views
10

Mam oprogramowanie, które musi określić, czy czas trwania odcięcia jest dłuższy niż 24 godziny od teraz. Oto kod, który muszę przetestować.Sprawdzanie PHP czy znacznik czasu jest dłuższy niż 24 godziny od teraz

$date = strtotime("2013-07-13") + strtotime("05:30:00"); 

if($date > time() + 86400) { 
    echo 'yes'; 
} else { 
    echo 'no'; 
} 

Moja aktualna data i czas to 2013-07-13 2am. Jak widać tylko 3 godziny drogi stąd. Według mojej matematyki 10800 sekund. Funkcja, którą mam, zwraca yes. Według mnie to $date jest większy niż teraz plus 86400 sekund, podczas gdy w rzeczywistości jest to tylko 10800 sekund. Czy to nie powróci no?

Odpowiedz

15
$date = strtotime("2013-07-13") + strtotime("05:30:00"); 

powinny być

$date = strtotime("2013-07-13 05:30:00"); 

See difference in this CodePad

+0

widzę, że problemem jest to, że data i czas są jak wartości są przechowywane w db. Są przechowywane jako data i czas, nie mogę tego zmienić. – Naterade

+1

@Naterada Nie zmieniaj ich, łącz je. –

+2

Przybiłeś to, dzięki za pomoc! – Naterade

1

przechowywać wartości daty i czasu w oddzielnych zmiennych i przekształcić go w datownik Unix przy użyciu strtotime() po łącząc zmienne.

Kod:

<?php 

$date = "2013-07-13"; 
$time = "05:30:00"; 

$timestamp = strtotime($date." ".$time); //1373673600 

if($timestamp > time() + 86400) { 
    echo 'yes'; 
} else { 
    echo 'no'; //outputs no 
} 

?> 
2
<?php 
date_default_timezone_set('Asia/Kolkata'); 

$date = "2014-10-06"; 
$time = "17:37:00"; 

$timestamp = strtotime($date . ' ' . $time); //1373673600 

// getting current date 
$cDate = strtotime(date('Y-m-d H:i:s')); 

// Getting the value of old date + 24 hours 
$oldDate = $timestamp + 86400; // 86400 seconds in 24 hrs 

if($oldDate > $cDate) 
{ 
    echo 'yes'; 
} 
else 
{ 
    echo 'no'; //outputs no 
} 
?> 
Powiązane problemy