2013-02-02 89 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