准确地获取用户当地时间

时间:2014-08-19 09:27:14

标签: javascript php html html5

我正在开发一个主要使用javascript,css,html5的项目。我需要准确地获取用户所在位置的本地时间,以允许用户在特定日期访问模块。 假设 1 September

如何准确地获取用户当地时间?

选项:

1:使用JavaScript获取用户本地时间并使用它。

问题:用户可以手动更改系统的日期时间设置,以更改日期并过早访问模块。

2:使用服务器日期时间在特定日期启用模块。

问题:服务器可能位于任何地方,例如:在美国,澳大利亚人无法访问该模块,除非美国的日期是9月1日。

还有其他选择吗?

是否使用客户端IP地址?

3 个答案:

答案 0 :(得分:0)

首先,您应该始终假设用户可能伪造他身边计算的任何数据。因此使用服务器时间更可靠。

使用IP是一个选项 - 您可以找到允许您将IP解析到其所在国家/地区的服务和数据库。示例:http://php.net/manual/en/book.geoip.php

最后 - 为什么您希望各个国家/地区的发布日期有效?他们总是可以使用其他国家/地区的某个人来访问其名称中的模块。

答案 1 :(得分:0)

好吧,用户的时间/日期信息不包含在http请求标头中,因此php不会自动拥有该信息。正如你所说,你可以使用javascript来让用户的时间与这里发布的内容类似:Determine a User's Timezone - 这是纯粹的javascript,如果你使用jquery或类似的东西,你可以很容易做到。

如果这些是注册用户,你可以允许他们在他们的个人资料/设置中设置一个时区,然后只使用那个设置,所以即使他们正在旅行,他们也会被设置为" home& #34;时区。

有帮助吗?

答案 2 :(得分:0)

如果用户授予权限并使用支持的浏览器等,您可以使用navigator.geolocation.getCurrentPosition()获取其位置。

有关参数和更多信息,请参阅developer.mozilla.org/en-US/docs/Web/API/Geolocation.getCurrentPosition

然后,您可以使用geonames.org提供的服务。例如,http://api.geonames.org/timezone?lat=47.01&lng=10.2&username=demo。这将返回给定坐标的时间。

根据第一条评论进行更新:当然,您永远不会相信任何来自外部的数据。但你可以做些事情来提高自信心。这并不是一个完全独立的解决方案。