Php 如何看待事物的年代

Php 如何看待事物的年代,php,datetime,date-difference,Php,Datetime,Date Difference,假设我有一些帖子,它们都有提交的时间 现在我要做的是检查它们在几分钟内发布了多久。例如,帖子1在40分钟前发布,帖子2在479分钟前发布,依此类推 当然,我会在一个循环中运行$data数组,但目前它是可以理解的。时间也包含时间戳,所以它不只是包含时间,而是包含日期和时间 php: html: 以下是可以帮助您的: <?php function time_elapsed_string($datetime, $full = false) { $now = new DateTime

假设我有一些帖子,它们都有提交的时间

现在我要做的是检查它们在几分钟内发布了多久。例如,帖子1在40分钟前发布,帖子2在479分钟前发布,依此类推

当然,我会在一个循环中运行
$data
数组,但目前它是可以理解的。时间也包含时间戳,所以它不只是包含时间,而是包含日期和时间

php:

html:




以下是可以帮助您的:

<?php

function time_elapsed_string($datetime, $full = false) {
    $now = new DateTime;
    $ago = new DateTime($datetime);
    $diff = $now->diff($ago);

    $diff->w = floor($diff->d / 7);
    $diff->d -= $diff->w * 7;

    $string = array(
        'y' => 'year',
        'm' => 'month',
        'w' => 'week',
        'h' => 'hour',
        'i' => 'minute',
        's' => 'second',
    );
    foreach ($string as $k => &$v) {
        if ($diff->$k) {
            $v = $diff->$k . ' ' . $v . ($diff->$k > 1 ? 's' : '');
        } else {
            unset($string[$k]);
        }
    }

    if (!$full) $string = array_slice($string, 0, 1);
    return $string ? implode(', ', $string) . ' ago' : 'just now';
}

$date = date_parse_from_format('Y-d-m H:i:s', '2014-02-05 5:22:35');
$unixTimestamp = mktime(
    $date['hour'], $date['minute'], $date['second'],
    $date['month'], $date['day'], $date['year']
);

echo time_elapsed_string(date('Y-m-d H:i:s',$unixTimestamp), false);

我喜欢它输出4个月数据的方式,但是有没有办法只在几分钟内输出数据呢?
$data[0]
可以保存多少值呢?就说它可以保存2014-28-04 5:22:35 date is(y'd'm)。但我想知道,即使时间戳是2013年的,我也希望它显示在minutes@ThinkkSo,修改了答案。让我知道这对你有用吗先生这是正确的答案谢谢大家晚上好
<div>
<p><?php echo $data[0] ?><p>
</div>
<?php

function time_elapsed_string($datetime, $full = false) {
    $now = new DateTime;
    $ago = new DateTime($datetime);
    $diff = $now->diff($ago);

    $diff->w = floor($diff->d / 7);
    $diff->d -= $diff->w * 7;

    $string = array(
        'y' => 'year',
        'm' => 'month',
        'w' => 'week',
        'h' => 'hour',
        'i' => 'minute',
        's' => 'second',
    );
    foreach ($string as $k => &$v) {
        if ($diff->$k) {
            $v = $diff->$k . ' ' . $v . ($diff->$k > 1 ? 's' : '');
        } else {
            unset($string[$k]);
        }
    }

    if (!$full) $string = array_slice($string, 0, 1);
    return $string ? implode(', ', $string) . ' ago' : 'just now';
}

$date = date_parse_from_format('Y-d-m H:i:s', '2014-02-05 5:22:35');
$unixTimestamp = mktime(
    $date['hour'], $date['minute'], $date['second'],
    $date['month'], $date['day'], $date['year']
);

echo time_elapsed_string(date('Y-m-d H:i:s',$unixTimestamp), false);