我在UTC + 0时区输入的日期时间为
$curDate = date("Y-m-d");
$curTime = date("g:i a");
我想要的是,检测访问用户的时区。
之后,将日期和时间转换为他/她的时区,并在他们的时区显示日期时间。
答案 0 :(得分:1)
您可以使用http://ipinfodb.com/
来检测用户本地化,从而检测用户时区,例如:
function geoLocalization($ip, $api_key)
{
$params = @file_get_contents("http://api.ipinfodb.com/v2/ip_query.php?key=".$api_key."&ip=".$ip."&timezone=true");
$fields = @new SimpleXMLElement($params);
foreach($fields as $field => $val) {
$result[(string)$field] = (string)$val;
}
return $result;
}
当您获得用户本地化时,您可以使用date_default_timezone_set
来设置时区。
最好让您的用户覆盖此内容。
您可以在此网站上找到所有时区: http://php.net/manual/en/timezones.php
答案 1 :(得分:1)
对于php +5.3,您可以使用DateTime::createFromFormat。但对于以前版本的php,您应该使用<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
。这是一个例子:
strtotime()
答案 2 :(得分:1)
$ utc_date = DateTime :: createFromFormat( &#39; Y-m-d G:我&#39;, &#39; 2011-04-27 02:45&#39;, 新的DateTimeZone(&#39; UTC&#39;) );
$ acst_date = clone $ utc_date; //这里我们不想要PHP的默认传递对象 $ acst_date-&gt; setTimeZone(new DateTimeZone(&#39; Australia / Yancowinna&#39;));
回声&#39; UTC:&#39; 。 $ utc_date-&gt;格式(&#39; Y-m-d g:i A&#39;); // UTC:2011-04-27 2:45 AM echo&#39; ACST:&#39; 。 $ acst_date-&gt;格式(&#39; Y-m-d g:i A&#39;); // ACST:2011-04-27 12:15 PM答案 3 :(得分:0)
要么强迫用户为您提供时区作为第一件事。
或者
获取请求的IPAddr,然后是地理位置,然后是tmezone。
第二个选项取决于第三方库和第三方服务器。