Stundenanzahl berechnen mit PHP?
Hallo,
ich habe auf meiner html seite 2x input type time, wie berechne ich über php wie viele stunden zwischen den 2 variablen dann sind?
3 Antworten
Hi axelred5,
das kann man sehr gut mit PHP umsetzen indem man beide Werte in eine UNIX-Zeit umrechnet und dann die Differenz berechnet. Dabei muss man auch beachten das auch über Mitternacht geht. Ich habe dir ein Beispiel-Code heraus gesucht und etwas angepasst:
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Stunden berechnen</title>
</head>
<body>
<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">
Startzeit: <input type="time" name="time1" required>
Endzeit: <input type="time" name="time2" required>
<button type="submit">Berechnen</button>
</form>
<div id="ausgabe">
<p>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$time1 = $_POST["time1"];
$time2 = $_POST["time2"];
$t1 = DateTime::createFromFormat('H:i', $time1);
$t2 = DateTime::createFromFormat('H:i', $time2);
if ($t1 > $t2) {
// Wenn es über Mitternacht rüber geht, dann wird das neu berechnet
$t2->modify('+1 day');
}
$diff = $t1->diff($t2);
$hours = $diff->h + ($diff->days * 24);
echo "Deine Zeitdifferenz beträgt $hours Stunden.";
}
?>
</p>
</div>
</body>
</html>
Ich hoffe das Skript hilft dir weiter das ganze zu verstehen. Bitte vorher alle Eingaben validieren, wenn es um Sicherheit geht!
2x input type time
Dein Konzept ist falsch. Wenn du nur die Zeit erfasst, ohne Datum, hast du mit PHP keine Chance, die abgelaufene Zeit zu ermitteln.
Nimm mal eine Heizung, die von 19:35 Uhr bis 8:26 Uhr läuft.
Vielleicht waren das ein paar Stunden, vielleicht der gesamte Winter. PHP kann es nicht wissen.
Du brauchst für Anfang und Ende je einen datetime Wert.
In der digitale Welt werden Zeitangaben in UNIX-Zeit (Zeitstempel) erfasst. Das ist eine Integer-Zahl. Der Startzeitpunkt wurde mit dem Beginn der UNIX-Epoche festgelegt (1.1.1970) Diese kann in beliebige Zeitangaben umgerechnet und dargestellt werden. Zeitformate können in UNIX-Zeit umgerechnet werden.
Du könntest mit PHP die Datumeingaben in Integerzahlen (Zeitstempel) umwandeln lassen, dann subtrahieren und das Ergebnis dann so formulieren, wie Du es gern hättest.