【发布时间】:2012-09-06 19:12:39
【问题描述】:
我正在尝试计算自发表评论以来经过的时间。我为此找到了function,它运行良好
但我刚刚注意到显示给用户的时间是错误的,因为他/她的时区。我做了一些研究,解决方案似乎是使用名为getTimezoneOffset 的 javascript 函数将用户的时区偏移量传递到 php 页面。
问题是我无法设法使用此偏移量来创建时区并在我上面链接的那个函数上使用它。到目前为止,在another code 的帮助下,我可以收集到:
function humanTiming ($time,$offset)
{
$isDST = 1; // Daylight Saving 1 - on, 0 - off
$timezoneName = timezone_name_from_abbr('', intval($offset, 10) * 36, $isDST);
$date = new DateTime($time, new DateTimeZone($timezoneName));
$time = strtotime($date);
$time = time() - $time; // to get the time since that moment
$tokens = array (
31536000 => 'year',
2592000 => 'month',
604800 => 'week',
86400 => 'day',
3600 => 'hour',
60 => 'minute',
1 => 'second'
);
foreach ($tokens as $unit => $text) {
if ($time < $unit) continue;
$numberOfUnits = floor($time / $unit);
return $numberOfUnits.' '.$text.(($numberOfUnits>1)?'s':'');
}
}
让我们这样调用函数:
echo humanTiming ($row['date'],"-240");
注意:-240 是我从运行该 javascript 函数中得到的值,所以它可能是我的时区偏移量。
第一个问题:-240 的值似乎无效,-0500 之类的值有效。
第二个问题:即使我尝试使用有效的偏移值,函数也会返回42 years
不确定这 42 年是如何计算的,但它完全错误。
【问题讨论】: