Ajouter 1 HR PHP5 aux variables / calculs de temps en blanc

voix
1

Je l'ai récemment mis à jour à PHP5, et ont noticied que dans une application que j'ai construit il semble y avoir une heure supplémentaire ajouté à certains de mes variables et caculations.

J'utilise:

date_default_timezone_set (Europe / Londres);

que je comprends signifie que PHP utilise BST contrairement à GMT standard, mais quand je les variables vides imprimer (retour avant que 00:00 en utilisant « H: i ») - Je suis maintenant obtenir 01h00.

Lorsque caculating l'heure / mn différence entre deux datetimes - Je suis aussi obtenir une heure de plus.

Mon code de base est le suivant:

<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>

Ce qui pour un exemple ROWN rendement:

Début: 08h57 (Basé sur item- $> start_time comme 2011-03-19 08:57:23 dans mon DB)

Finition: 12:59 (Basé sur item- $> finish_time comme 2011-03-19 12:59:38 dans mon DB)

Caculation: 05:02 (Cela devrait être 04h02)

Créé 21/04/2011 à 10:09
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
0

Essayez de régler

date_default_timezone_set('UTC');

immédiatement avant la conversion de votre temps écoulé H: format i dans

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

ne pas oublier de le réinitialiser à nouveau par la suite

Vous traitez le temps écoulé comme un horodatage pour le formatage (c'est ce que la fonction date () attend), PHP est la suite, il est le comportement standard et de le traiter comme une date / heure formatée locale (ne pas apprécier qu'il est utilisé comme écoulé temps), il est donc d'ajouter l'heure pour afficher l'heure en fonction de votre paramètre de fuseau horaire.

Créé 21/04/2011 à 13:37
source utilisateur

voix
1

Vous traitez la différence de temps comme un moment où vous utilisez la date ( « H: i »). Je vous suggère de calculer simplement la différence de temps écoulé manuellement

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

Sinon, vous avez des problèmes lorsque $ est écoulé plus de 24 heures.

Créé 21/04/2011 à 14:08
source utilisateur

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