Datetime.Now错误地确定我的位置

时间:2010-09-03 12:38:48

标签: c# datetime localization locale

我有一个网站,使用代码Datetime.Now显示当前日期。根据我的理解,Datetime.Now应该显示当前时间,因为它将显示在查看器的当前区域设置中。

目前,当我在localhost上测试时,网站正确地确定我的位置(en-nz)并显示正确的日期。但是,当我现场运行网站时,我总是得到一个不同的约会。

那么系统如何确定查看者的区域设置以及为什么我的网站在本地和现场显示Datetime.Now之间存在差异?

3 个答案:

答案 0 :(得分:7)

DateTime.Now有服务器的时间,但不是客户端的时间。如果要检测客户端的时间,则需要使用Javascript,方法是检测时间或使用时区计算。

在localhost工作正常,因为服务器和客户端在同一个PC /时区

希望它有所帮助!

答案 1 :(得分:5)

不,DateTime.Now将在上运行的计算机的本地时区中检索当前时间。换句话说,假设你正在编写一个Web应用程序(你还没有说清楚),你的案例中的Web服务器。

如果您想在浏览器的本地时区显示它,您最好发送DateTime.UtcNow并编写一些JavaScript以将其转换为当地时间......或者只是让JavaScript工作超出用户系统的当前时间。

据我所知,没有办法准确地从JavaScript中获取时区。您可以从UTC获取当前偏移量,但这与时区本身不同。 (由于DST之类的东西,偏移量会发生变化;知道当前的偏移量并不会告诉您DST什么时候会启动。)

答案 2 :(得分:0)

也许机器有不同的时间设置?如果开发和实时服务器位于不同的位置,那很可能。正如其他答案所说,DateTime.Now获取服务器时间,而不是客户端时间。