PHP dilimleri ile bazı sorunlar bir süre için şimdi aklımın arkasında olmuştur ve ben şu anda ne yapıyorum daha bunu işlemek için daha iyi yollar var olup olmadığını merak ediyordum.
Sorunların tüm veritabanı depolanan tarihleri reformating etrafında döner:
Saklanan damgalarının dilimi offest normalleştirmek için, (kullanıcılar için) birden timezones desteklemek için bir site ile uğraşırken ben hep CURRENT_TIMESTAMP
nitelik veya {kullanarak sunucu timezone ile saklayabilirsiniz [(1)] } function.
Bu şekilde ben (PHP zaman fonksiyonları farkında timezone beri) damgası girildiği zaman PHP için ne ayarlanmış dilimi düşünmek zorunda değilsiniz. Her kullanıcı için, kendi tercihinize göre ben kullanarak benim önyükleme dosyasında bir yerde zaman dilimini ayarlayın:
date_default_timezone_set($timezone);
Ben php date()
fonksiyonu ile tarihleri biçimlendirmek için aradığım zaman, dönüşüm çeşit MySQL şu formatta damgası saklar yana yer almak zorundadır Y-m-d H:i:s
. Timezone hiçbir konuda, sadece çalıştırabilir:
$date = date($format,strtotime($dbTimestamp));
Bu sorun olduğunu date()
ve strtotime()
PHP timezone farklı sunucu dilimine ayarlanır ise, ofset dilimi iki kez uygulayın (yerine olacak, yani her iki zaman dilimi farkında fonksiyonları biz istiyoruz gibi bir kez).
Böylece sadece bir kez ofset dilimini uygulayarak - Bu anlaşma için, ben genellikle benim date()
doğrudan uygulamak için izin, farkında timezone değil UNIX_TIMESTAMP()
fonksiyonunu kullanarak MySQL damgalarını almak.
Ben gerçekten de bu 'hack' gibi artık ben normalde olduğu gibi bu sütunları almak, ya da *
(bazen büyük ölçüde sorguları basitleştiren) tüm sütunları almak için kullanabilirsiniz değilsiniz. Ayrıca, bazen sadece (sorgu kompozisyon için çok soyutlama olmadan açık kaynak paketleri ile kullanırken özellikle) UNIX_TIMESTAMP()
kullanmak için bir seçenek değil.
Bir PHP oluşturulan damgası depolamak Ben önlemek istiyorum ofset timezone ile saklayın - CURRENT_TIMESTAMP
veya NOW()
bir seçenek değildir kullanımı damgası, saklarken başka bir konudur.
Herhalde burada gerçekten temel bir şey eksik, ama ben onları case-by-case tedavi etmek zorunda değilim, şimdiye kadar ben bu konuları işlemek için genel bir çözüm ile gelip mümkün olmamıştır. Düşünceleriniz çok açığız