2009-05-20 49 views
3

我有一個ASP.NET應用程序,託管在時區A中,正在被用戶在時區B中使用。是否有任何方法將整個Web應用程序的時區設置爲B,即使託管環境在A?我已經使用適當的uiCulture和culture值在web.config中設置了全球化標記,並且它們在本週的幾天和其他本地化設置中都很有用,但不幸的是,它們沒有調整時鐘:/我可以做的最簡單的事情是什麼實現調整,所以當在應用程序中做DataTime.Now時,我得到的時區B中的當前時間不是A.Thx。ASP.NET應用程序和本地時區

回答

3

假設您有權進行此更改: 假設應用程序的所有用戶共享相同的時區,將機器的時區設置爲B將是我的建議。

否則: 從Utc中存儲時區B的偏移量並使用該組合,儘管這可能會遇到夏令時可能出現的問題。

+1

不幸的是我不能改變整個服務器的時區。我唯一想改變的是IIS中一個網站的時區。理想情況下,在web.config中進行設置......就像文化/本地化信息一樣。 – 2009-05-20 21:51:41

+1

不,最接近你可以做的就是在web.config中存儲偏移量,然後擴展DateTime類以使用該偏移量,以便「MyDateTime.Now」處於所需的時區中。 – 2009-05-21 14:00:51

3

通過調用JavaScript Date.getTimezoneOffset() 調用並通過隱藏輸入字段將其傳遞迴服務器,從而以分鐘爲單位獲取客戶端時區偏移量(以分鐘爲單位)。

服務器使用DateTime.UTCNow以UTC獲取服務器時間。

服務器使用DateTime.SpecifyKind根據需要在服務器本地時間和UTC之間進行轉換。

0

我最近不得不在一個我正在製作的網站上對觀衆的時區進行說明。所以我首先得到服務器的UTC時間,然後添加查看器的時區(通過客戶端腳本獲取它)。

然後在我的代碼中,我用它作爲偏移量。

一致認爲這是一種神奇的方式來編程,並不簡單或高效,但這似乎是唯一的方式對我來說。

相關問題