Planlama &

3 Cevap php

PHP bir takvim / zamanlama app yazıyorum. Şu anda ben size olayı meydana istediğiniz hafta ve zaman gün sürebilir. Ben de timezone için sormak ve GMT olay saatini almak için buna göre ayarlayın.

Bir gösterinin günün gece yarısından itibaren mahsup Sonra ben o zaman saklayın. Bu ince ve harika çalışıyor, ama ben yaz saati vurduğunda ne olur? Ben o olur ne emin değilim. Diğer sorun değil bütün ülkeler bu yüzden orada tür bir belada DST olması.

Ben bir takvimde bu olayları göstererek am, bu yüzden zamanlama önemli.

3 Cevap

Neden kullanıcılara sorumluluğu geçemiyor. Ben onlar uygulamayı kullanmak için kayıtlı olması gerekir varsayıyorum.

Sadece onları ofset onların zaman ne onların profilinde demek var. GMT + 2, GMT gibi vb - 8, Onlar DST ayarları değişti bilmek ve buna göre kendi profilinizi güncelleyin olacaktır.

Tabii ki, bu kullanıcı tabanına bağlıdır. Onlar yaklaşımı ya da kabul edebilir.

DST ile uğraşan gerçek bir acıdır.

Gelecekteki olaylar için yer ve olay meydana etmektir yerel saati değil GMT saati saklamak gerekir. DST başlar ve durur (sadece ABD'de geçen yıl oldu) ve olayların ardından yerel saatle GMT kayması değil, bazen hükümetler değişiklik olmasıdır.

Eğer olay oluştuğu zaman bildirmek gerekiyorsa Sonra, her gün 24-48 saat boyunca olayları toplamak ve daha sonra GMT onların kez dönüştürmek. Bunu yapmak için, this one gibi bir yer-zaman dilimi veritabanı gerekiyor. GMT sonra olay meydana gelecektir tam olarak ne zaman biliyorum, olay sırasında her yer için ofset ve GMT zaman dönüştürmek için kullanabilirsiniz olsun.

Ben GMT (UTC) ile doğru yolda olduğunu düşünüyorum. Eğer spesifik bir gerçekleşir (veya oluştu) bazı olay var her kanonik damgası temsili olarak UTC kullanın point-in-time. UTC DST kurallar tarafından etkilenmez, bu yüzden büyük, belirgin nokta-in-time olarak temsil eder.

Eğer etkinlik tarih / zaman net temsili için bir strateji var sonra, o zaman oldukça kolayca kullanıcılar (veya kabul etmek en mantıklı ne zaman dilimine dayalı localizing tarih / kere sorunu çözebilir ) onlara gösterilecek. O daha alakalı olup olmadığını UTC gerçek olay tarih / saati depolamak çünkü muhtemelen, bilmek ve de olayın saat dilimini saklamak gerekir, ancak, oldukça kolay kullanıcı zaman dilimi için yerelleştirebilirsiniz kendilerine herhangi bir kullanım durumunda.

Bu yerelleştirme genellikle bir zaman dilimi kütüphane ile yapılan ya da sizin SDK tarafından sağlanan (örneğin Java java.util.Calendar vardır) veya bir üçüncü taraf uzantısı olarak (örneğin Python pytz vardır). PHP bir eşdeğeri vardır eminim, ama ben onun kitaplıkları ile aşina değilim.

Bu kütüphaneler genellikle Olson Zoneinfo DB gibi bir kurallar veritabanı üstüne inşa edilmiştir. Bu kurallar oldukça sık değiştirebilirsiniz, böylece siz gerçek bir global uygulama geliştirme, özellikle, temel veritabanı güncellemeleri üstünde kalmak zorunda. Ancak, bir de zaman DST kurallarını değiştiren çalışma ortamında önemli bir yükseltme gerçekleştirmek veya önemli bir kod yapmak zorunda kalmadan (teoride) kurallar veritabanını güncellemek böylece ezoterik, belirsiz bir zaman dilimi kuralları dışa iyi bir iş yapmak Özellikle alan değişikliği.

Bu dünyanın en kolay sorun değil ve biz bunu yapmak zorunda olduğunu kokuyor, ama bunu bir kaç kez yaptım ve sonra, lokalizasyon endişe vs tam nokta-in-time temsil depolama arasındaki endişeleri ayrılmasını grok ettik bir kere ikinci doğa haline gelir.