如何使用函数进行数组数据

时间:2014-04-11 07:09:54

标签: php arrays function

我有一个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);
 } 

现在我如何调用该功能并以所需格式回显该时间

请帮助我

1 个答案:

答案 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结果。我的建议 - 使用类似的函数,传递一个合适的格式,以后可以在标记中解析,并消除从左到右的标记,直到达到非负值。

干杯。