PHP5 προσθήκη 1 ΥΕ σε κενό χρόνο μεταβλητές / υπολογισμοί

ψήφοι
1

Έχω πρόσφατα αναβαθμιστεί σε PHP5 και έχουν noticied ότι μέσα σε μια εφαρμογή που έχω χτισμένο φαίνεται να είναι μια επιπλέον ώρα προστίθενται σε κάποια από τις μεταβλητές και caculations μου εκεί.

Χρησιμοποιώ:

date_default_timezone_set ( 'Europe / London')?

που καταλαβαίνω σημαίνει ότι η PHP χρησιμοποιεί BST σε αντίθεση με το πρότυπο GMT, αλλά όταν μπορώ να εκτυπώσω άδειο μεταβλητές (επέστρεψε πριν ως τις 00:00 χρήση «H: i») - Είμαι τώρα να πάρει τις 01:00.

Όταν caculating το / λεπτά διαφορά ώρας ανάμεσα σε δύο datetimes - Είμαι, επίσης, να πάρει μια επιπλέον ώρα.

βασικό κώδικα μου είναι:

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

Η οποία για παράδειγμα rown αποδόσεις:

Έναρξη: 8:57 (Βασισμένο σε $ item-> START_TIME όπως 2011-03-19 8:57:23 στο ΣΠ μου)

Τέλος: 12:59 (Βασισμένο σε $ item-> finish_time όπως 2011-03-19 12:59:38 στην DB μου)

Caculation: 5:02 (Αυτό θα πρέπει να είναι 4:02)

Δημοσιεύθηκε 21/04/2011 στις 10:09
πηγή χρήστη
Σε άλλες γλώσσες...                            


2 απαντήσεις

ψήφοι
0

Δοκιμάστε να ρυθμίσετε

date_default_timezone_set('UTC');

αμέσως πριν από τη μετατροπή παρέλθει ο χρόνος σας για να H: i διαμορφώσετε το

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

θυμόμαστε για να το επαναφέρετε και πάλι μετά

Είσαι θεραπεία του χρόνου που έχει παρέλθει ως σφραγίδα datetime για τη μορφοποίηση (αυτό είναι που αναμένει η λειτουργία ημερομηνία ()), έτσι ώστε η PHP ακολουθεί είναι τυπική συμπεριφορά και την αντιμετωπίζει ως ένα locale διαμορφωθεί ημερομηνία / ώρα (δεν αντιλαμβάνομαι ότι αυτό είναι που χρησιμοποιείται ως έχει παρέλθει χρόνο), γι 'αυτό την προσθήκη της ώρας για να εμφανίζει τη σωστή ώρα σύμφωνα με τη ρύθμιση ζώνης ώρας σας.

Απαντήθηκε 21/04/2011 στις 13:37
πηγή χρήστη

ψήφοι
1

Μπορείτε αντιμετωπίζουν την διαφορά ώρας ως χρονικό σημείο, όταν χρησιμοποιείτε ημερομηνία ( «H: i»). Σας προτείνω να απλά να υπολογίσει την παρέλευση διαφορά ώρας με μη αυτόματο τρόπο

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

Διαφορετικά, θα αντιμετωπίσετε προβλήματα κατά $ που πέρασε είναι μεγαλύτερη από 24 ώρες.

Απαντήθηκε 21/04/2011 στις 14:08
πηγή χρήστη

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