【发布时间】:2013-04-15 05:49:44
【问题描述】:
我想根据国家/地区显示 GMT 时间。如果假设,来自印度的某个用户注册到我的应用程序中,我应该将 GMT 时间作为 GMT +5 附加到我的数据库中。如果假设,来自法国的其他用户注册到我的应用程序,我应该将 GMT 时间作为 GMT +1 附加到我的数据库中。
【问题讨论】:
-
为什么需要 GMT? PHP 提供Named Timezones
我想根据国家/地区显示 GMT 时间。如果假设,来自印度的某个用户注册到我的应用程序中,我应该将 GMT 时间作为 GMT +5 附加到我的数据库中。如果假设,来自法国的其他用户注册到我的应用程序,我应该将 GMT 时间作为 GMT +1 附加到我的数据库中。
【问题讨论】:
如果您想在 PHP 中执行此操作,则需要地理定位。有两种方式:自制方式,或 API 方式。根据您想要的分辨率,情况可能会有所不同。请记住,这不会神奇地检测代理。权衡是在效率和内务管理之间。
选择一个地理定位数据库并在其中查询 IP 子集,这将为您提供国家/地区。保留国家/地区的时区列表。这很痛苦,这就是为什么我不打算为它提供代码。
这个是微不足道的:
<?php
$geoloc = file_get_contents("http://api.ipinfodb.com/v3/ip-city/?format=json&key=<API KEY>&ip=".$_SERVER['REMOTE_ADDR']);
if ($geoloc && ($r = json_decode($geoloc)) !== false) {
// Your timezone is in $r->timeZone in the format "+/-i:ii"
}
?>
您需要一个用于 ipinfodb 的 API 密钥,您可以从以下地址获得该密钥:http://ipinfodb.com/register.php
【讨论】:
有时,没有server-based/PHP 获取本地时间的方法。
您必须通过Javascript 从客户端获取它。谷歌bitbucket timezone detect 并使用它来设置一个local_timezone cookie,您可以从PHP 中读取并通过date_default_timezone_set() 进行设置
//get the client ip and assign it to variable
$IP=$_SERVER['REMOTE_ADDR'];
//if you using localhost you can check using follow variable
//$IP = '202.71.158.30';
//pass the ip as a parameter for follow URL it will return the country
$country = file_get_contents('http://api.hostip.info/country.php?ip='.$IP);
//show the country
echo $country
此外,这里是帮助您获取 GTM 时区的链接...
How do I get Greenwich Mean Time in PHP?
你需要实现自己的逻辑,例如,获取客户的时间并从 GTM-0 中扣除,你将得到 GTM(小时).. 希望你能明白我想说的..
希望对你有帮助。
【讨论】: