1

所以,我設置了一個應該過期的cookie。但是,我希望這能夠在世界各地工作。所以我需要調整用戶時區的到期日期。如何確定一個(ASP.NET/MonoRail)網站用戶在哪個時區?

所以,我需要找出用戶的時區,服務器端。

有沒有辦法在BCL做到這一點?就像在依靠CultureInfo.CurrentUICulture設置正確的方式(我相信MonoRail LocalizationFilter會這樣做,但還沒有正確檢查),然後確定用戶所在的時區(以及計算夏令時那裏)基於那?

在.NET 3.5中有System.TimeZoneInfo,但關於什麼是Ids是 - 它們是ISO代碼還是什麼。

或者我會依靠客戶端上的某些東西來推送來自Date.getTimezoneOffset()的這些信息? 我寧願避免,因爲客戶端謊言。

+0

嗯。我只查看了http://code.google.com/p/gears/wiki/GeolocationAPI,它至少可以返回一個國家/地區代碼。幾乎我想要的... – 2008-12-12 10:33:25

+0

供參考,cookie時間以GMT。因此,如果您將它們設置在服務器上,則假設客戶端未將其時區修改爲某種奇怪的值,它將在應該時過期。儘管如此,即使它們有,它仍然會在24小時內過期,除非它們的日期設定完全錯誤。 – 2008-12-15 18:00:56

回答

0

確定客戶時區沒有真正的好方法。你可以跟蹤他們的IP地址,然後嘗試給它附加一個位置,但那個技巧和容易出錯(有些定位器把弗吉尼亞州的所有AOL使用)

我想說最好是這樣做在客戶端。

1

這很簡單。在服務器上放置一個asp:hidden字段,並用當前服務器的日期/時間填充它。在客戶端上,從客戶端上的當前日期(新日期())中減去隱藏字段中的日期/時間,並且您有與GMT的偏移量。在服務器上進行反向操作(例如隱藏字段中的新日期(),從隱藏字段值中減去服務器時間)。

1

除了IP地理位置(由其他人提到的原因的一個壞主意)或JavaScript(由於時區帶來的含義太不明確)),無法獲取用戶的時區。

您最好的選擇是允許用戶通過某種用戶控制面板來設置時區本身。這樣,您就可以確切知道用​​戶所在的時區,並允許用戶確認時區。

未來應該會在瀏覽器中添加一些很棒的地理位置功能,但這在生產中還有很長一段路要走。

如果您決定使用JavaScript進行自動檢測,我推薦使用這些腳本,這些腳本掃描用戶系統上的日期,以瞭解DST何時發生,以及何時恢復GMT偏移量(即使在DST內)。

http://www.attackwork.com/BlogEntry/3/Time-zone-detect-and-ignore-Daylight-Saving-Time-DST/Default.aspx http://www.attackwork.com/BlogEntry/11/Daylight-Saving-Time-DST-Detect/Default.aspx

還沒一個非常偉大的想法,但它的作品。

相關問題