在代碼隱藏中:
我在SQL Server中使用DateTime.ToUniversalTime()
存儲我的日期。
然後我讀取日期,然後在DateTime.ToLocalTime()
之前轉換回網頁。在ASP.NET中,我應該如何將時間轉換爲GMT?
當我的Web服務器與客戶端位於完全不同的時區時,這不起作用。我所有的轉換都發生在Web服務器上。在代碼隱藏方面嘗試了這一點後,我相信我需要在客戶端中完成這項工作。
什麼是確保瀏覽器的實際本地時間正確轉換爲GMT格式的首選方法?
在代碼隱藏中:
我在SQL Server中使用DateTime.ToUniversalTime()
存儲我的日期。
然後我讀取日期,然後在DateTime.ToLocalTime()
之前轉換回網頁。在ASP.NET中,我應該如何將時間轉換爲GMT?
當我的Web服務器與客戶端位於完全不同的時區時,這不起作用。我所有的轉換都發生在Web服務器上。在代碼隱藏方面嘗試了這一點後,我相信我需要在客戶端中完成這項工作。
什麼是確保瀏覽器的實際本地時間正確轉換爲GMT格式的首選方法?
一種選擇是詢問用戶有關其時區的一般配置文件信息,然後在服務器上使用該時區。
我所見過的大多數實現需要本地時間的地方依賴於用戶指定其時區,然後將其存儲在服務器上的配置文件中,然後用於調整所顯示的日期/時間。這似乎是最穩健的方法。另一種方法是嘗試使用其IP地址(GeoIP或類似地址)來建立用戶位置並進行相應調整。這不是完全可靠的,因爲有些公司的網關與用戶不在同一地點。
如果您不能只顯示確定服務器時區的時間(例如說「中央時間下午12:00」)或讓用戶在他們的個人資料中提供他們的時區,那麼您將需要使用javascript轉換時間。我不想去通過所有的步驟,但這個頁面有這樣做的一個很好的演練:
https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-6016329.html
注意,顯示用戶的本地時間的首選方法是讓他們提供他們的時區在他們的個人資料中,所以你可以在服務器上進行這種轉換。
谷歌上的大多數博客都指出,.NET沒有提供獲取客戶端時區的方法。
但是最有發言權的,要麼:
要求用戶輸入自己的時區,然後利用這些信息來顯示數據
使用它返回的JavaScript功能的瀏覽器的時區分鐘偏移和然後將其發送到服務器進行進一步處理。參考:http://weblogs.asp.net/cprieto/archive/2010/01/03/handling-timezone-information-in-asp-net.aspx
+1最簡單的解決方案往往是最好的 – 2010-12-20 09:43:10
謝謝。我只需要擔心兩個時區,所以這是我選擇的選項。我通過創建控制檯應用程序來列出所有可用的密鑰來獲得密鑰。 – Blanthor 2010-12-27 22:39:17