2017-01-26 2 views
0

i diese Werte in der Datenbank haben:Zeit Ehrerbietung von Datenbankwert


START_TIME:

  • 1/1/2017 15:38
  • 1/1/2017 14:25
  • 1/1/2017 13:00

Was ich will, ist die Unauthorize zu berechnen d Dauer Zeit gegen Zeit '16: 00: 00 'und liste die Dauer Zeit auf. Hier ist was ich getan habe.

include 'includes/db_conn.php'; 
$result = mysqli_query($connection,"SELECT * FROM time") or die(mysqli_error($connection)); 
echo "<table border=1>" 
. "<tr>" 
. "<td>Start Time</td>" 
. "<td>Limit</td>" 
. "<td>Unauthorized Time</td>" 
. "</tr>"; 
    foreach ($result as $value) { 
     $db_date = strtotime($value['start']); 
     $limit = strtotime("16:00:00"); 
     $interval = date_diff($limit,$db_date); 
     $unauto = $interval->format('%h:%i:%s'); 
    echo "<tr>" 
    . "<td>".$value['start']."</td>" 
    . "<td>16:00:00</td>" 
    . "<td>".$unauto."</td>". 
    "</tr>"; 
    } 
echo '</table>'; 

aber das funktioniert nicht. es zeigt sich mit Nachrichten wie:

Warning: date_diff() expects parameter 1 to be DateTimeInterface, integer given in C:\xampp\htdocs\mct\unauthorized.php on line 13

Fatal error: Call to a member function format() on a non-object in C:\xampp\htdocs\mct\unauthorized.php on line 14

bitte helfen!

Antwort

2

Dies ist eine einfache Art und Weise:

$db_date = new DateTime(date('H:i:s',strtotime($value['start']))); 
$limit = new DateTime(date('H:i:s',strtotime("16:00:00"))); 
$interval = date_diff($limit,$db_date); 
$unauto = $interval->format('%h:%i:%s'); 
+0

Vielen Dank Herr Mohammad. – DNeb

2
$db_date = date_create($value['start']); 
$limit = date_create("16:00:00"); 

alternativly

$db_date = strtotime($value['start']); 
$limit = strtotime("16:00:00"); 
$diff = $db_date-$limit; 
$interval = DateInterval::createFromDateString($diff.' seconds'); 
$unauto = $interval->format('%h:%i:%s'); 
+0

das Ergebnis wie folgt zeigt - "0: 0: 2161320". nimm den ersten Zeilenwert aus der obigen Datenbank und probiere es aus. – DNeb

Verwandte Themen