我有一个span标签,其中包含
等数组数据 <?php echo " <span >".$comments_array[$j]['posted_time']."</span> "; ?>
并且该评论的回复时间为 2014-04-11 05:07:52
现在我有一个以 x小时前格式显示时间的功能,
以下是功能
define("SECOND", 1);
define("MINUTE", 60 * SECOND);
define("HOUR", 60 * MINUTE);
define("DAY", 24 * HOUR);
define("MONTH", 30 * DAY);
function relTime($time)
{
$now = new DateTime;
$dateObj = new DateTime($dt);
$diff = (array) $now->diff($dateObj);
$diff['w'] = floor($diff['d'] / 7);
$diff['d'] -= $diff['w'] * 7;
$tokens = array(
'y' => 'year',
'm' => 'month',
'w' => 'week',
'd' => 'day',
'h' => 'hour',
'i' => 'minute',
's' => 'second'
);
foreach ($tokens as $unit => &$text)
{
if ($diff[$unit])
{
$text = sprintf(
'%s %s%s',
$diff[$unit], $text, ($diff[$unit] > 1 ? 's' : '')
);
}
else
{
unset($tokens[$unit]);
}
}
return array_shift($tokens);
}
现在我如何调用该功能并以所需格式回显该时间
请帮助我
答案 0 :(得分:0)
有一种更好,更清洁的方法来实现这一目标。这是一个函数,给定日期/时间字符串和格式字符串,将以所需格式返回现在的差异。
function getDatetimeDifference($datetime, $format) {
$datetime_obj = new DateTime($datetime);
$now = new DateTime();
$difference = date_diff($now, $datetime_obj);
$result = $difference->format($format);
return $result;
}
这是一个用例:
echo getDatetimeDifference(
'2013-04-11 10:35:33',
'%R%a days, %h hours, %i minutes, %s seconds ago'
);
// Outputs "-364 days, 23 hours, 55 minutes, 10 seconds ago"
如果您希望使用自那时起的总小时数,那么如果您使用时间戳,您将会更好,因为您可以轻松地减去差异,然后将其除以3600以获得以小时为单位的时差。 / p>
请记住,如果您没有通过相应的格式,DateTime对象将会溢出 - 例如,如果您使用上述函数仅获取从现在到去年之间的小时数,那么您将得到23结果。我的建议 - 使用类似的函数,传递一个合适的格式,以后可以在标记中解析,并消除从左到右的标记,直到达到非负值。
干杯。