2013-04-22 70 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

相關問題