2012-08-27 17 views
6

Bu dateutils.tz.tzlocal() işlevinin heroku üzerinde çalışıp çalışmadığını doğruladım. bilgisayarın işletim sistemi, mutlaka kullanıcı değil?Python'u kullanarak, bir kullanıcının o anki saat dilimini otomatik olarak belirlemesi için en doğru yol nedir?

Kullanıcıların bir zaman dilimini saklamanın kısa bir yolu, bir isteğin nereden geldiğini belirlemenin herhangi bir yolu var mı?

Heyecan sizin dilimini ayarlamak için bir ayar var ama onlar varsayılan ne olması gerektiğini belirlemek nasıl ve bir kullanıcı oturum değilken bu işe nasıl olacağını merak ediyorum.

+0

için sabit olmaktan bu değeri engeller? Ya dünyanın her yerinden kullanıcılar ssh? –

+1

Bu, istemci tarafında çalıştırıldığından js ile daha iyi yapılabilir mi? –

+0

Çalıştığım tüm web uygulamaları kullanıcı zaman dilimi tercihini saklar. Onun küçük bir örnek, ama yine de bir örnek. Onun nispeten temsili değil, ama basit ve bu tuhaf müşteriler/OSs :) –

cevap

1

(Ben şişeyi kullanıyorum) Kullanıcıların IP adresini kolayca şişe içinde alabilirsiniz (belki de request nesnesinden?), Konum belirleme kullanabilirsiniz. Örneğin. http://www.hostip.info/ aracılığıyla. Bununla birlikte, muhtemelen% 100 dayanıklı değildir. Örneğin, bir kişi bir VPN veya başka bir tür vekil kullanıyorsa, onun "gerçek" IP adresini göremezsiniz.

+2

İşe yaramıyordum ama js çözümünden çok daha karmaşıktır .. –

+0

Evet, gerçekten. Ben js ile aşina değilim. Burada her gün yeni bir şey öğrenir. Bir yerden saat dilimi almak istiyorsanız :-) –

+0

; [Yapabilirsiniz] (http://stackoverflow.com/q/16505501/4279). – jfs

9

Javascript'i kullanabilir ve müşterinin saat dilimini bir çerezde ayarlayabilirsiniz. Bir AJAX isteğini bile kullanabilir ve sonra ofseti sunucuya gönderebilir ve müşterinin oturumuna kaydedebilirsiniz.

var offset = new Date().getTimezoneOffset(); 

Açıklama

ofset zaman dilimi UTC ve yerel saat arasındaki dakika farkı vardır. Bu, yerel zaman dilimi UTC'nin arkasındaysa ve ileride olması durumunda negatifse, ofsetin pozitif olduğu anlamına gelir. Örneğin, saat diliminiz UTC + 10 ise (Avustralya Doğu Standart Saati), -600 döndürür. Yaz saati bile bahsediyorsun çevreye ne tür, belirli bir bölge

Mozilla Javascript Reference: getTimezoneOffset

+0

, normalde utc ofset (yerel saat = utc + ofset) olarak adlandırılan şeyin tersi işaretine sahip değildir. – jfs

İlgili konular