嘿 Stackfriends =P 我知道 time() 和 date() 函数,但我想要实现的是来自中国的用户比来自法国的用户显示另一个时间。我不能使用 JavaScript,因为我也在使用本地时间进行一些计算。
4 回答
唯一应该阻止您使用 javascript 的是,如果 a) 您只是提供 API 并且无法控制页面内容;或 b) 客户端无论如何都阻止了 javascript。通过 javascript 是最可靠的方法,而不是简单地提示用户输入他们的时区。
Cookies 或 ajax 都可以。对于更简单的 cookie 方式,将此 javascript 放在任何页面的 head 部分以添加 cookie...
<script>
d = new Date;
gmtoffset = d.getTimezoneOffset() / 60;
document.cookie = 'gmtoffset=' + gmtoffset;
</script>
然后在您的 PHP 脚本中,读取$_COOKIE['gmtoffset']
以获取相对于 GMT 的时区。
恕我直言,带时区的客户时间应该是行业范围内的标准请求标头。
编辑:从 cookie 示例中删除“过期”日期,因为它可能会在 2012 年 1 月 1 日之后导致问题。
有两个很好的解决方案:
- 询问用户他的时区;根据大多数用户来自的时区和/或通过 JavaScript 检测到的本地时区预先选择一个默认值
- 只需在您的网站上使用 UTC (GMT)。
显然,这在很大程度上取决于您的网站,哪个选项是合适的。在像 stackoverflow 选项 2 这样的网站上使用并且最有意义,因为有各种基于天的事件,因此所有用户的天数需要同时更改。
一种方法是使用来自 MaxMind 的 IP 到 City 数据库之类的东西- 这可以为您提供用户 IP 地址的时区。
或者,只需询问用户他们喜欢哪个时区,并在 cookie 或会话变量中记住它。
虽然我从未使用过它,但似乎有一些功能可以让您设置时区,而其他日期功能可以告诉您当前时区设置和 GMT 之间的区别。这些可能会对您有所帮助。