如何在php中显示基于国家的GMT时间

时间:2013-04-22 10:47:07

标签: php datetime gmt

我想以国家/地区为基础显示GMT Time。如果假设某个来自印度的用户注册到我的应用程序中,我应该将GMT时间作为GMT +5附加到我的数据库中。如果假设,来自法国的其他一些用户注册到我的应用程序中,我应该将GMT时间作为GMT +1附加到我的数据库中。

2 个答案:

答案 0 :(得分:1)

如果您想在PHP中执行此操作,则需要进行地理定位。有两种方式:自制方式或API方式。根据您希望的分辨率,情况可能会有所不同。请记住,不会神奇地检测代理。权衡取决于效率和内务管理。

自制

选择地理位置数据库并查询其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

答案 1 :(得分:0)

有时候,没有server-based/PHP方法来获取当地时间。

您必须通过Javascript从客户端获取。 Google 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(小时)..希望你得到我想说的话.. < / p>

希望它有所帮助。