2017-12-15 1 views
3

Ich habe dies in der Datenbank als Typ DATETIME gespeichert abgelegt.
Betrachten Sie den Wert für sie: 2017-12-14 16:17:21Überprüfung der verbleibenden Zeit von einem Feld in der Datenbank

Und das ist meine Programmlogik. Ich möchte überprüfen, ob 72 Stunden vergangen sind sonst echo müssen Sie 48 Stunden und 22 Minuten und 55 Sekunden zum Beispiel warten.

$row = $res->fetch_assoc(); 
$last_dl = $row['last_dl']; 

// To seconds from 1970 
$last_dl = strtotime($last_dl); //120 
$seventy_two_hours_in_seconds = 60 * 60 * 72; 

if (time() > ($last_dl + $seventy_two_hours_in_seconds)) { 
    echo "72 Passed"; 
} else { 
    echo "You need to wait: " . date('H/h i/m s/s',mktime(0, 0, ($last_dl + $seventy_two_hours_in_seconds) - time())); 
} 

Was ist falsch an der Logik? Weil es weniger Stunden anzeigt.

+0

mit [ 'DATE_ADD()'] (https: // www. w3schools.com/sql/func_mysql_date_add.asp) könnte Ihnen helfen, wenn Sie MySQL verwenden – Swellar

+0

date_default_timezone_set() –

+0

@MrKen Nope. Das hat nicht funktioniert. –

Antwort

1

Sie können Zeit in Sekunden berechnen nach derzeitigem es in Stunden, Minuten und Sekunden zu warten, und:

<?php 
$row = $res->fetch_assoc(); 
$last_dl = $row['last_dl']; 

// To seconds from 1970 
$last_dl = strtotime($last_dl); //120 
$seventy_two_hours_in_seconds = 60 * 60 * 72; 

if (time() > ($last_dl + $seventy_two_hours_in_seconds)) { 
    echo "72 Passed"; 
} else { 
    $wait = date('U', $last_dl + $seventy_two_hours_in_seconds) - date('U'); // seconds for wait 
    $hours = floor($wait /3600); 
    $min = floor(($wait/60) % 60); 
    $sec = $wait % 60; 
    echo "You need to wait: ". $hours. ':'. $min.':'.$sec ."\n"; 
} 

http://sandbox.onlinephpfunctions.com/code/08477cd78c82dfe2b4a5c5f4aee6414866999a8c

Verwandte Themen