1

我如何使用 php time() 获取用户的本地时间,或者还有其他方法可以做到这一点?这意味着它将在他们的时区。

我需要用用户的当地时间计算前时间,这是我为前时间函数找到的一个不错的脚本:

<?php
function timeago($time)  
    {  
    $periods = array("second", "minute", "hour", "day", "week", "month", "year", "decade");  
    $lengths = array("60","60","24","7","4.35","12","10");  

    $now = time();

    $difference     = $now - $time;  
    $tense         = "ago";  

    for($j = 0; $difference >= $lengths[$j] && $j < count($lengths)-1; $j++)   
        {  
        $difference /= $lengths[$j];  
        }  

    $difference = round($difference);  

    if($difference != 1)   
        {  
        $periods[$j].= "s";  
        }  

    return "$difference $periods[$j] $tense";  
    }  
?>

<?php

$date = strtotime('2012-04-15 07:41:03');
$datep = timeago($date);

echo $datep;
?>

从上面的脚本中,我使用 time() 但它只获取我的服务器时间而不是我身边的本地时间。我怎样才能得到我的当地时间(用户的当地时间)?

4

3 回答 3

1

我不确定在没有客户端向您传递信息的情况下是否总是可以从服务器获取本地时间 - javascript 就是一个很好的例子。我这样做的方式(不是我的想法,在某处阅读)是使用 javascript 设置本地时间 cookie 并让 PHP 读取 cookie,然后使用 date_default_timezone_set() 使用该数据。我认为这是唯一的防弹答案,对我来说效果很好。

编辑:我从http://php.net/manual/en/function.localtime.php阅读

于 2012-04-17T09:27:13.427 回答
0

最好的方法是客户端。使用 Javascript 的Date函数,并将它们发送到 PHP。

于 2012-04-17T09:21:47.533 回答
0

没有基于服务器的/PHP 方法来获取本地时间。您必须通过 Javascript 从客户端获取它。谷歌“bitbucket timezone detect”并使用它来设置一个“local_timezone”cookie,您可以从 PHP 读取并通过 date_default_timezone_set() 设置

于 2012-04-17T09:27:48.257 回答