PHP5 boş zaman değişkenleri / hesaplamalara 1 HR ekleyerek

oy
1

Geçenlerde Php5 yükseltme ettik ve inşa ettik bir uygulama içinde benim değişkenler ve caculations bazı ilave ekstra saat var gibi görünüyor olduğunu noticied var.

Ben kullanıyorum:

date_default_timezone_set ( 'Avrupa / Londra');

hangi anlıyorum PHP standart GMT karşı BST kullanıyor demektir, ama boş değişkenleri yazdırırken ( H: i seçeneğini kullanarak 00:00 önceki gibi döndü) - Şimdi 01:00 alıyorum.

İki tarihsaat arasındaki saat / dakika fark caculating zaman - Ben de fazladan bir saat alıyorum.

Benim temel kodudur:

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

Örnek için hangi döner rown:

Başlangıç: 08:57 ($ item- dayanarak> benim DB start_time olarak 2011-03-19 08:57:23)

Bitiş: 00:59 (benim DB finish_time olarak 2011-03-19 00:59:38> $ item- dayanarak)

Caculation: 05:02 (Bu 04:02 olmalıdır)

Oluştur 21/04/2011 saat 10:09
kaynak kullanıcı
Diğer dillerde...                            


2 cevaplar

oy
0

ayarlamayı deneyin

date_default_timezone_set('UTC');

derhal H için geçen süre dönüştürmeden önce: i biçimlendirmek

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

sonradan tekrar sıfırlamak için hatırlamak

Sen biçimlendirme için bir tarih saat damgası olarak geçen süre tedavi ediyoruz (bu tarih () fonksiyonu beklediği budur) bu yüzden PHP standart bir davranış takip ederek (bir geçen olarak kullanılırken bunları o takdir değil bir yerel biçimlendirilmiş tarih / zaman olarak ele almaktadır zamanı), zaman dilimi ayarına göre doğru zamanı göstermek için saat ekleyen yüzden.

Cevap 21/04/2011 saat 13:37
kaynak kullanıcı

oy
1

( "I H") tarih kullandığınızda bir zamana kadar zaman farkı davranıyorlar. Ben sadece manuel geçen süre farkını hesaplamak önermek

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

$ Geçen 24 saat sonra daha büyük olduğunda Aksi sorunlarla çalışacaktır.

Cevap 21/04/2011 saat 14:08
kaynak kullanıcı

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