2010-07-30 43 views
4

對於我的項目(基於Web和iPhone的應用程序),我需要收集用戶的時區以便向他/她顯示相關數據。我可以想到的一些可能性是:收集用戶的時區而不明確詢問用戶的最佳方式是什麼?

1.獲取它使用用戶的IP(但是,如果用戶是使用代理服務器的)
與請求參數2.發送它(不過,這將需要額外的參數去與請求連接,或者可以爲會議收集一次)
3。通過cookie傳遞(與參數設置具有相同的含義)
4.根據我在註冊時收集的用戶郵政編碼,但對於可以瀏覽應用程序的未註冊用戶將無法查看相關信息數據。

因此,所有的一切,我現在能想到的都有一個或多個缺點,每種方法。我只想知道還有什麼其他方法,以及哪種方法最適合用戶體驗不受影響並且用戶沒有明確詢問他/她的時區的情況。此外,這種方法應適用於Web和iPhone 。

+0

爲什麼你不要問他們或有一個選擇框來改變它,而不是複雜化這樣一個簡單的'功能'? – 2010-07-30 16:39:03

+0

@david我想讓用戶的前期變得簡單,以便他們在每次更改位置時都不必提及時區,因爲我正在使用的應用程序是基於實時位置的服務,所以我需要收集它而不用提示用戶每次選擇他們的時區。 – 2010-08-02 04:41:31

回答

0

我會使用JavaScript收集用戶的當前時間,並將其沿第一個請求發送,以便在整個會話中持續使用。

你必須允許偏差(也許+ - 15分鐘),但它應該是能夠確定的時間段很可靠這樣。

接下來最好的事情可能確實是通過地理定位服務運行用戶的IP來找出國家。但是,您必須維護國家/時區地圖才能正確執行此操作,並且您將遇到有多個時區(如美國或俄羅斯)的國家/地區的問題。

+0

我也考慮過這些問題已提到的問題,但重點是所有這些都需要在客戶端進行額外的處理,除了通過地理定位服務運行ip我期待的是在標題本身附加的東西,但我不知道如果這些信息可以從http標題中提取出來,或者它真的存在於那裏,因爲我從來沒有在http請求標頭中看到這樣的信息。 – 2010-07-30 12:39:58

+0

@Hitesh我不認爲有HTTP頭指定用戶的時區。不過,在Ajax調用中獲取當前時間應該不太難。 – 2010-07-30 12:43:24

+0

謝謝,我想我現在會堅持使用ajax調用方法。 – 2010-07-30 12:45:25

0

我不知道很多關於iPhone的發展,但也有可能是東西,可以讓你訪問用戶的喜好,甚至顯示他們的當前時間的API中。

對於一般的網絡,它在this question廣泛報道。

0

對於網絡,您應該能夠從用戶的瀏覽器中獲取它。對於iPhone,我會想象有一個API。至少,ISTR表示當我更換時區時,我的iPhone顯示正確的本地時間(我想它在連接到本地時從本地信元塔獲取此信息)。

1

使用JavaScript,你可以使用new Date().getTimezoneOffset(),如果這是任何幫助。根據MDC,這將得到你在幾分鐘內的抵消...在我的情況(芬蘭),-180。

2

對於獲取時區的iPhone SDK ...這將爲您提供您所需的信息並根據夏令時進行調整。

NSTimeZone *systimeZone = [NSTimeZone systemTimeZone]; 
NSString *timeZoneString = [systimeZone localizedName:NSTimeZoneNameStyleShortStandard locale:currentLocale]; 
if([systimeZone isDaylightSavingTimeForDate:[NSDate date]]){ 
    timeZoneString = [systimeZone localizedName:NSTimeZoneNameStyleShortDaylightSaving locale:currentLocale]; 
} 

關於apple docs的TimeZone對象有很多信息。

相關問題