如何在不使用系统时间的情况下在c#中获取当前本地DateTime

时间:2016-01-06 02:38:31

标签: c# asp.net .net asp.net-mvc

我正在尝试获取实际的当前本地DateTime(在客户端),即使用户已将系统DateTime更改为其他内容。

我用过这个:

DateTime localDateTime = DateTime.Now;

但它会查看系统时间,因此如果用户更改系统DateTime,我将无法获得实际的DateTime。

我还考虑过获取时间并转换它,但这也考虑了计算UTC时间的系统时间。

如果无法做到这一点,有没有办法获取网络服务器的DateTime?

这样做的原因是记录更新/创建某些记录的时间,并且我试图避免用户可以通过更改系统时间来操纵此时间的情况。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:8)

由于它是 WEB APPLICATION ,所有后端代码都将托管在您的服务器中,这意味着您拥有完全控制那里有时区。

您不需要也不应该关心从客户端传递的时区,因为您永远不会认为它是可靠的。

另一件事是,如果您不小心,您的网络服务器的时区可能与您的数据库服务器使用的时区不同(我以前曾面对它)。所以这是最佳实践

最佳实践:在任何地方使用UTC时区,并在需要时转换为本地时区。

答案 1 :(得分:1)

如果您想在客户端使用时间,则根本不使用C#。您拥有的代码只能在Web服务器上运行。 ASP.Net MVC中没有C#代码在客户端计算机上运行。

要在客户端获得时间,您必须从javascript或第三方插件获取它。在任何一种情况下,您仍然可能依赖于通过HTTP协议提交的数据,这些 easy 在浏览器之外进行操作。如果客户真的想骗你,那么你可以做什么