PHP5 přidáním 1 hod na prázdných časových proměnných / výpočtů

hlasů
1

Nedávno jsem upgradovat na PHP5, a mají noticied že v rámci aplikace jsem postaven se zdá být navíc přidány do některé z mých proměnných a caculations hodin.

Používám:

date_default_timezone_set ( 'Evropa / London');

Chápu to znamená, že PHP používá BST na rozdíl od standardní GMT, ale když jsem tisknout prázdné proměnné (vrací před 00:00 pomocí „H: i“) - Já jsem teď dostat 01:00.

Když caculating na / mins rozdíl mezi dvěma datetimes hodinový - Jsem také dostat další hodinu.

Můj základní kód je:

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

Které pro příklad rown výnosy:

Začátek: 08:57 (na $ item- základě> start_time as 2011-03-19 08:57:23 ve své DB)

Povrchová úprava: 12:59 (na $ item- základě> finish_time as 2011-03-19 12:59:38 ve své DB)

Caculation: 05:02 (To by mělo být 04:02)

Položena 21/04/2011 v 10:09
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
0

zkuste nastavit

date_default_timezone_set('UTC');

bezprostředně před převedením uplynulý čas až H: i naformátovat

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

pamatovat na to znovu obnovit později

Jste léčbu uplynulý čas jako datetime razítko pro formátování (to je to, co funkci date () očekává), takže PHP sleduje to je standardní chování a brát to jako locale formátovaný datum / čas (ne ocenit, že je to být používán jako uplynulá time), takže to přidáním hodinu zobrazovat správný čas podle vašeho nastavení časového pásma.

Odpovězeno 21/04/2011 v 13:37
zdroj uživatelem

hlasů
1

Léčíte časový rozdíl jako v okamžiku, kdy jste datum použití ( „H: i“). Navrhuji, stačí vypočítat časový rozdíl uplynulý manuálně

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

V opačném případě budete dostanete do problémů, když $ uplynulá je větší než 24 hodin.

Odpovězeno 21/04/2011 v 14:08
zdroj uživatelem

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