2017-03-10 3 views
0

Ich habe Probleme mit Subtraktion Zeiten in PHP.Subtrahierende Zeit PHP

Meine Zeiten sind:

$ row [ 'exp'] = 2017-03-31

und Datum ('Ym-d') = 2017.03.10 (heute

)
$datetime1 = strtotime($row['exp']); 
$datetime2 = strtotime(date('Y-m-d')); 
$secs = $datetime1 - $datetime2;// == <seconds between the two times> 
$days = $secs/86400; 
echo $days; 

Mein Ergebnis ist:

36520,958333333333

+0

Neben der Antwort unten ID schaut auch in "Carbon", wenn Ihr zuzuteilen mit Zeit und Datum zu tun gehen werden - http: // Kohlenstoff .nesbot.com/docs/ – ATechGuy

+0

@keaner Danke, das ist interessant! – NicePersonsLiveMore

+0

kein Problem ich benutze es allot und es funktioniert Wunder – ATechGuy

Antwort

1

Verwenden Sie stattdessen die PHP DateTime-Klasse. Sie verfügt über integrierte Funktionen wie DateTime :: diff, die genau das zu sein scheinen, wonach Sie suchen. Mit den DateTime-Objekten lässt sich auch viel einfacher arbeiten.

$today = new DateTime('today'); 
$date = new DateTime("2017-03-31"); 

echo $today->diff($date)->d; // 21 

einfach Ihre $row['exp'] als Parameter von $date stattdessen übergeben, so dass Sie

$date = new DateTime($row['exp']); 

erhalten Obwohl, ich kann Ihr Problem mit dem angegebenen Eingang, den Sie haben, this live demo Ausgänge nicht reproduzieren " 20.958333333333 "(was ungefähr richtig ist, müssen Sie nur ceil() es).

Live demo

Referenzen

+0

Danke, aber warum hat mein Code nicht funktioniert? es scheint in Ordnung für mich ... – NicePersonsLiveMore

+0

Ja, das [** demo **] (https://3v4l.org/48LZa) zeigt das erwartete Ergebnis mit Ihrem Code, also denke ich vielleicht Ihre '$ row [' exp '] 'ist nicht der Wert, den Sie denken, dass es ist? Ich würde anfangen, das zu betrachten, da der Code und die Informationen, die Sie bisher geliefert haben, funktionieren. – Qirel

+0

Ihre Antwort funktioniert übrigens nicht, wenn das Datum genau 1 Jahr später ist. – NicePersonsLiveMore