PHP5 Zugabe von 1 HR, um leere Zeitvariablen / Berechnungen

stimmen
1

Ich habe vor kurzem auf PHP5 Upgrade und haben noticied, dass innerhalb einer Anwendung, die ich gebaut habe es scheint eine zusätzliche Stunde hinzugefügt werden, um einige meiner Variablen und caculations.

Ich benutze:

date_default_timezone_set ( 'Europa / London');

die ich verstehen bedeutet, dass PHP mit BST zu Standard GMT Gegensatz, aber wenn ich leer Variablen drucken (zurückgegeben, bevor sie als 00.00 mit „H: i“) - Ich bin jetzt 01.00 bekommen.

Wenn caculating die Stunde / min Differenz zwischen zwei Datetimes - Ich bin auch eine zusätzliche Stunde bekommen.

Mein Grundcode ist:

<td><?php if(isset($item->start_time)) { echo date('H:i', strtotime($item->start_time)); } ?></td>
<td><?php if(isset($item->finish_time)) { echo date('H:i', strtotime($item->finish_time)); }?></td>
<td>
     <?php
     $start = strtotime($item->start_time);
     $end = strtotime($item->finish_time);
     $elapsed = $end - $start;
     if($elapsed != NULL) { echo date(H:i, $elapsed); }
     ?>
</td>

Welche für ein Beispiel Rown kehrt:

Start: 08.57 (Basierend auf $ item-> START_TIME wie 2011-03-19 08.57.23 in meiner DB)

Finish: 12.59 (Basierend auf $ item-> finish_time wie 2011-03-19 12.59.38 in meiner DB)

Caculation: 5.02 (Dies sollte 4.02 sein)

Veröffentlicht am 21/04/2011 um 10:09
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
0

versuchen Sie,

date_default_timezone_set('UTC');

unmittelbar vor Ihrer verstrichene Zeit H Umwandlung: I-Format in

if($elapsed != NULL) { echo date("H:i", $elapsed); } 

Erinnern sie wieder zurückgesetzt danach

Sie sind die verstrichene Zeit als Datumstempel für die Formatierung der Behandlung (das ist, was die Funktion date () erwartet) so PHP folgt es Standardverhalten ist und als Gebietsschema formatiert Datum / Uhrzeit der Behandlung (nicht zu schätzen, dass sie als verstrichene verwendet wird wird Zeit), so ist es die Stunde der Zugabe die richtige Zeit angezeigt werden entsprechend Ihrer Zeitzone Einstellung.

Beantwortet am 21/04/2011 um 13:37
quelle vom benutzer

stimmen
1

Sie behandeln die Zeitdifferenz als Zeitpunkt, wenn Sie Datum verwenden ( „H: i“). Ich schlage vor, Sie nur die verstrichene Zeitdifferenz berechnen manuell

echo floor( $elapsed / 60) . ":" . ($elapsed % 60)

Sonst werden Sie Probleme, wenn $ verstrichene größer als 24 Stunden ist.

Beantwortet am 21/04/2011 um 14:08
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more