2013-04-22 65 views
1

我想显示格林威治标准时间基于国家。如果假设,来自印度的一些用户注册到我的应用程序中,我应该将格林尼治标准时间GMT +5附加到我的数据库中。如果假设,来自法国的其他一些用户注册到我的应用程序中,我应该将格林尼治标准时间GMT + 1加入我的数据库中。如何显示格林威治标准时间基于国家在php

+0

为什么你需要GMT? PHP提供了[Named Timezones](http://il1.php.net/manual/en/timezones.php) – 2013-04-22 10:57:09

回答

1

如果你想这样做在PHP中,你需要地理位置这一点。有两种方法:自制方式或API方式。取决于你想要的分辨率,事情可能会有所不同。请记住,这不会神奇地检测代理。取舍之间的效率和家务之间。

家酿

拿起地理位置DB和查询它的IP子集,它会给你的国家。保留国家时区列表。这是一个痛苦,这就是为什么我不会给它代码。

API

这一个很简单:

<?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

+0

PS:不隶属于ipinfodb,只是你知道的。 – 2013-04-22 10:55:21

0

有时,没有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(小时)..希望你能得到我想说的。 。

希望它有帮助。

+0

thnks ...大多数情况下,这个例子将会是这样的<?php date_default_timezone_set(“Asia/Bangkok”); echo date_default_timezone_get(); ?>但我想为印度显示GMT 5+ ..我不应该硬编码任何值 – AndroidRaji 2013-04-22 10:54:00

+0

Plz告诉我,如果国家是印度..如何打印GMT +5 – AndroidRaji 2013-04-22 11:34:59

+0

您可以使用hostip相同..我已经更新了答案... – 2013-04-22 11:57:01

相关问题