2010-05-21 17 views
15

Php kullanarak Locale nasıl elde edilir, Saat dilimini konuma göre almak istiyorum, php almak için herhangi bir olasılık var.Php kullanarak yerel ayar nasıl yapılır?

Onu GMT'ye dönüştürmem ve Database.Again'ı kaydetmem gerekiyor. Aynı zaman dilimi ile aynı UI'ye geri çekmem gerekiyor.

+1

Makinenin yeri PHP'de ya da PHP'nin işlem yaptığı HTTP isteğini yapan kullanıcının yerel ayarları kullanılıyor mu? – Quentin

+3

'locale'! =' Konum 'Konum 'anlamına geldiğine inandığım,' locale' bir sistemin ülkesi ve dili için bir ayardır – jigfox

cevap

1

Sunucu tarafında müşterinin yerel ya dilimini alamayan ve yalnızca müşteriden ona bir tahmin yürütebilirim JavaScript kullanarak.

(tarayıcı Java destekliyorsa, daha yerel bilgi alabilirsiniz, ama bu bir ağrı biraz ve herkes uygulamaları nefret eder.)

UTC zaman damgaları gibi tüm defa saklamak, bir web uygulamasında saat dilimleri işlemek için ve kullanıcı tarafından seçilen bir saat dilimini kullanarak sayfa içi biçimlendirme için bunları metne dönüştürün. Saat diliminde tahmin etmek için like in this question yöntemlerini kullanabilirsiniz, ancak bu güvenilir olmadığından, kullanıcının açıkça saat dilimini seçmesine izin vermelisiniz. Sonuç gerçek yerel almak için

setlocale (LC_ALL,"0"); 

kullanma

+0

php web sitesinde kullanıcının mesajın (SMS) schdule zamanını yapılandırmasına izin veriyoruz. Eğer çeşitli bölgelerde son kullanıcı ayarlarına izin vermeliyiz. – Ramakrishnan

+0

Evet ... Kullanıcı, Sarfraz tarafından açıklandığı gibi "date_default_timezone_set" işlevine geçmek için el ile kullandıkları "timezone_identifier" değerini belirtmek zorunda kalacaklar. Tanımlayıcıların listesi için http://www.php.net/manual/en/timezones.php adresine bakın; onları bir açılır kutuya veya başka bir arayüze koyabilirsiniz. Bağlantılı sorudaki gibi, açılır pencerenin varsayılan değeri için en iyi tahmin zaman dilimini seçmek için JavaScript'i kullanabilir veya yalnızca UTC’ye varsayılan değer olarak kullanabilirsiniz. Kullanıcı bir zaman ve saat dilimi girdikten sonra, veritabanı depolama için UTC'ye dönüştürmelisiniz. UTC zaman damgalarını saklamak için – bobince

+0

+1. Ayrıca phpBB kaynağını (veya benzer bir PHP uygulamasını) kontrol etmek isteyebilirsiniz, kullanıcı kayıt olduktan sonra kendi saat dilimini seçebilir, bence tam olarak aradığınız şey bu. Karmaşık tarih aritmetiği kullanmak yerine, sayısal olarak sıralamak kolay olduklarından, UTC zaman damgaları için – wimvds

1

Sen kullanabilirsiniz:

date_default_timezone_set('Europe/London'); 
date_default_timezone_get; // Europe/London 

veya

if (ini_get('date.timezone')) { 
    echo 'date.timezone: ' . ini_get('date.timezone'); 
} 
+0

Bu çift tek tırnak var mı, yoksa bir yazım hatası mı? – Svish

+0

bunu locale almak için kullanabilir date_default_timezone_get() – Ramakrishnan

+0

@Svish: Bu doğru yazılmış bir yazım hatasıydı. Teşekkürler – Sarfraz

53

.

+0

Çok teşekkürler! PHP belgelerinde gerçekten vardı, fakat bir şekilde burnumun önünde çok özlemiştim :) –

+0

Yukarıdaki sorunun cevabı bu olmalıydı. Çok teşekkürler!! –

+0

Kısa, basit, noktaya! :) –

İlgili konular