2013-02-02 142 views
2

在ASP .NET(MVC 4)中,以下內容不會在客戶端的本地時間中呈現。客戶端TimeZoneInfo

@DateTime.UtcNow.ToLocalTime() 

我希望它在客戶端的本地時間呈現。我相信我可以通過在BeginRequest上設置線程的TimeZoneInfo來做到這一點。

這是處理時區的權利(或適當)嗎?如果是這樣,我怎麼能得到BeginRequest裏面的客戶端的TimeZoneInfo,所以我可以適當地設置它?

謝謝。

回答

0

DateTime.UtcNow.ToLocalTime()會給你服務器的時間。最好的方法是讓用戶在您的網站的帳戶設置中決定他的時區。

你可以用一些Javascript的竅門來找到他的時區。看到這個問題:How to get client date and time in ASP.NET?

+0

任何通用的方式來獲得這在一個BeginRequest處理程序,並更改當前的TimeZoneInfo? – Jeff

+0

好吧,根據那個問題我鏈接你需要寫一些Javascript,它會發送給你用戶的本地時間,並自己做數學。我通常所做的就是將用戶的時區存儲在他的Session中,但是,我再次將其存儲在數據庫中以及他的帳戶設置中。另一種作弊方式是將日期格式設置爲「X分鐘前」,而不是實際日期。無論用戶當地時間如何,這都可以工作。 – Artless