time()具有不同的时区

时间:2012-04-17 09:20:07

标签: php

如何使用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()但它只获得我的服务器时间而不是我身边的本地时间。我怎样才能获得当地时间(用户的当地时间)?

3 个答案:

答案 0 :(得分:1)

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

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

中读到的

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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