为什么LocalTime显示服务器时间而不显示浏览器时间?

问题描述 投票:1回答:4

我可能做错了-但无法弄清楚原因。我的数据库中有一个DateTime字段,保持UTC时间

我的服务器在美国,浏览器在欧洲。

PageLoad代码如下:

DateTime t = DateTime.SpecifyKind((DateTime)rdr["startTime"], DateTimeKind.Utc);
label1.Text = t.ToLocalTime().ToString();

我显示的时间是美国当地时间,而不是欧洲。如何显示浏览器的本地时间?

谢谢!

c# datetime localtime
4个回答
5
投票

一种技术是在客户端浏览器上使用JavaScript检测客户端时区偏移量(以分钟为单位)。>

alert((new Date()).getTimezoneOffset());

然后可以将其发送回服务器并存储在会话或cookie中,并用于抵消向其显示的UTC日期。另外,另一种技术是拥有用户配置文件,以便他们可以指定时区。


3
投票

toLocalTime在您的服务器上执行,而不是在浏览器上执行。如果要在服务器端转换日期,则必须获取用户所在的时区(欧洲这里至少有3个时区,如果算上夏令时,则为6 ....]


1
投票

作为some wrote,该代码正在服务器上执行-因此所应用的时区是服务器本地的时区,这是有道理的。


1
投票

我认为根据客户端浏览器中的时间在数据库中存储时间值是不明智的。

© www.soinside.com 2019 - 2024. All rights reserved.