2017-05-22 19 views
0

Ich habe wie einfache Aufgabe aussieht, aber ich kann das Problem nicht lösen. Ich möchte zweimal in Sekunden durch PHP ($ time + $ time1) zählen, aber mein Ergebnis ist + 1 Stunde (+ 1 Tag). Warum?PHP Zählen Zeit in Sekunde

$hours="00"; 
$minutes="34"; 
$seconds="13"; 

$hours1="00"; 
$minutes1="35"; 
$seconds1="11"; 

$time=($hours*3600)+($minutes*60)+$seconds; // 2053 seconds 
$time1=($hours1*3600)+($minutes1*60)+$seconds1; // 2111 seconds 

$sum=$time+$time1; // 4164 seconds 

$format=date('H:i:s', $time); // 01:34:13 
$format1=date('H:i:s', $time1); // 01:35:11 
$formatsum=date('H:i:s', $sum); // 02:09:24 

$ Format hat sein: 34: 13 nicht 01: 34: 13
Wenn ich die Tage Datum hinzu (‘d H: i: s', $ time); Ergebnis ist : 34: 13
Meine Aufgabe ist 00.34.13 + 00.35.11 mit Ergebnis 01.09.24 nicht : 09: 24
Muss ich etwas falsch mit Zeit formatieren? Warum gibt es + 1 Tag und + 1 Stunde zum Ergebnis?

+0

Zweiter Parameter von [Datum] (http://php.net/manual/en/function.date.php) Funktion ist Timestamp nicht nur Sekunden .. –

+0

@Mohammad Hamedani was bedeutet Timestamp? wissen Sie ? –

+0

Timestamp bedeutet Unix Timestamp, das ist die Anzahl der Sekunden seit 00:00:00 UTC am 1. Januar 1970. Aber ich teste deinen Code und es funktioniert nur durch Sekunde! Ich antworte auf deine Frage. –

Antwort

0

Veränderung dieser:

$format=date('H:i:s', $time); // 01:34:13 
$format1=date('H:i:s', $time1); // 01:35:11 
$formatsum=date('H:i:s', $sum); // 02:09:24 

An:

$format=gmdate('H:i:s', $time); // 00:34:13 
$format1=gmdate('H:i:s', $time1); // 00:35:11 
$formatsum=gmdate('H:i:s', $sum); // 01:09:24 

gmdate - Formatiert eine GMT/UTC-Datum/Zeit

0

Das Ergebnis ist 01:34:13, da Ihre Standardzeitzone auf UTC +1 eingestellt ist. Verwenden gmdate() Funktion anstelle von date(), wenn Sie einen Zeitstempel zu einem UTC-Datum konvertieren:

$hours = "00"; 
$minutes = "34"; 
$seconds = "13"; 

$hours1 = "00"; 
$minutes1 = "35"; 
$seconds1 = "11"; 

$time = ($hours * 3600) + ($minutes * 60) + $seconds; // 2053 seconds 
$time1 = ($hours1 * 3600) + ($minutes1 * 60) + $seconds1; // 2111 seconds 

$sum = $time + $time1; // 4164 seconds 

$format = gmdate('H:i:s', $time); // 00:34:13 
$format1 = gmdate('H:i:s', $time1); // 00:35:11 
$formatsum = gmdate('H:i:s', $sum); // 01:09:24 

Auch ich bin nicht sicher, was Sie mit Ihrem Code erreichen wollen, aber es gibt bessere Tools für Datum/Zeitmanipulation als manuelle Addition von Sekunden. Check out DateTime und DateInterval Klassen von PHP-Standard-Bibliothek.

+0

upvoted, weil ich Ihre Antwort genau richtig fühle, aber Sie sollten auch OP aktualisierten Code entsprechend Ihrer Antwort geben –

1

Sie sollten Ihre Zeitzone überprüfen. Die Zeit berechnet sich nach Ihrer lokalen Zeitzone. Als Beispiel für

$time=($hours*3600)+($minutes*60)+$seconds; // 2053 seconds 
$format=date('H:i:s', $time); // 02:34:13 

Für + 2GMT