2012-08-27 22 views
6

我已驗證dateutils.tz.tzlocal()在heroku上不起作用,即使它做到了,是不是隻能從tz它的電腦的操作系統,不一定是用戶?使用python,什麼是自動確定用戶當前時區的最準確的方法

缺少存儲用戶時區,有什麼方法可以確定請求來自哪裏? (我使用的瓶)

的Twitter確實有設置調整時區,但我不知道他們是如何確定默認應該是什麼,以及如何在未登錄用戶會工作。

+0

你說的是什麼樣的環境?如果用戶ssh來自世界各地,該怎麼辦? –

+1

這會更好地與js完成,因爲它運行客戶端? –

+0

我所使用的所有網絡應用程序都存儲用戶時區首選項。它是一個小樣本,但仍是一個樣本。它相對不雅,但其簡單,並且由於奇怪的客戶端/操作系統造成的最小失敗效果很好:) –

回答

1

如果您可以輕鬆地從燒瓶內獲取用戶的IP地址(可能來自request對象?),則可以使用地理定位。例如。通過http://www.hostip.info/

雖然它可能不是100%萬無一失。例如,如果有人使用VPN或其他類型的代理服務器,您將看不到他的「真實」IP地址。

+2

我不知道它會工作,但比js解決方案複雜得多.. –

+0

是的,確實如此。我對js並不熟悉。每天在這裏學習新的東西。 :-) –

+0

如果你想從一個位置獲得時區; [你可以](http://stackoverflow.com/q/16505501/4279)。 – jfs

9

您可以使用Javascript並在Cookie中設置客戶端的時區。您甚至可以使用AJAX請求,然後將偏移量發送到服務器並保存在客戶端的會話中。

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

說明

的時區偏移量的區別,以分鐘爲單位,UTC和本地時間之間。請注意,>這意味着如果本地時區在UTC之後,則偏移量爲正;如果超前,則爲負值。例如,如果您的時區爲UTC + 10(澳大利亞東部標準時間),則會返回-600。夏令時防止該值從一個常量,即使對於一個給定的語言環境

Mozilla Javascript Reference: getTimezoneOffset

+0

不是它與通常稱爲utc偏移量(本地時間= utc +偏移量)的符號相反。 – jfs

相關問題