用php mysql数据库过去的时间

时间:2017-06-29 02:17:12

标签: php mysql

我在我的评论页面上工作,我有这个简单的问题 如何将我的数据库结果更改为“[结果x]天/月/年前”? 看起来像是死亡日期减去( - )发布日期。但是,我该怎么写核心呢。

感谢您的帮助。

这是我的代码,

<?php
$sql=mysql_query("SELECT * FROM reviews ORDER BY review_code DESC LIMIT 3");
while($db=mysql_fetch_array($sql)){

echo "
<div style='padding-bottom: 25px;'>
Post Date: ".$db['post_date']." minus(-) Current Time: ".time()."
</div>
";}
?>

结果是

Post Date: 2017-06-27 08:00:00 minus(-) Current Time: 1498701679
谁能帮助我吗?请..

4 个答案:

答案 0 :(得分:1)

看看这里:http://php.net/manual/en/datetime.diff.php

你基本上应该做的是创建两个日期时间对象并使用diff函数:

$datetime1 = new DateTime($db['post_date']); // Date post was created
$datetime2 = new DateTime(); // Default DateTime is now
$interval = $datetime1->diff($datetime2);
echo $interval->format('Post created %a days ago');

如果您想动态更改措辞(天,月,年等),请查看以下评论​​:http://php.net/manual/en/datetime.diff.php#97880

答案 1 :(得分:0)

Dwipa的好消息。 PHP已经有了这样的函数。 time_elapsed_B函数可以做你想要的。这是包含其中信息的文章。 http://php.net/manual/en/function.time.php

EDIT 哎呀没有内置但在链接提供。

function time_elapsed_A($secs){
    $bit = array(
        'y' => $secs / 31556926 % 12,
        'w' => $secs / 604800 % 52,
        'd' => $secs / 86400 % 7,
        'h' => $secs / 3600 % 24,
        'm' => $secs / 60 % 60,
        's' => $secs % 60
    );

    foreach($bit as $k => $v)
        if($v > 0)$ret[] = $v . $k;

    return join(' ', $ret);
}


function time_elapsed_B($secs){
    $bit = array(
        ' year'        => $secs / 31556926 % 12,
        ' week'        => $secs / 604800 % 52,
        ' day'        => $secs / 86400 % 7,
        ' hour'        => $secs / 3600 % 24,
        ' minute'    => $secs / 60 % 60,
        ' second'    => $secs % 60
    );

    foreach($bit as $k => $v){
        if($v > 1)$ret[] = $v . $k . 's';
        if($v == 1)$ret[] = $v . $k;
    }
    array_splice($ret, count($ret)-1, 0, 'and');
    $ret[] = 'ago.';

    return join(' ', $ret);
}

答案 2 :(得分:0)

没有内置功能来执行此操作。你必须手动编写代码,找到现在和日期之间的差异,并将其转换为时间单位。

但是你不必在这里重新发明轮子。像Moment这样的日期操作库已经为此实现了功能。 (查看Moment::calendar()方法)

答案 3 :(得分:0)

以下功能由社区http://php.net/manual/en/function.time.php提供。它返回一个人类可读的数秒表示。因此,请在现在和您的约会之间以秒为单位提供它。

function time_elapsed_B($secs){
    $bit = array(
        ' year'        => $secs / 31556926 % 12,
        ' week'        => $secs / 604800 % 52,
        ' day'        => $secs / 86400 % 7,
        ' hour'        => $secs / 3600 % 24,
        ' minute'    => $secs / 60 % 60,
        ' second'    => $secs % 60
        );

    foreach($bit as $k => $v){
        if($v > 1)$ret[] = $v . $k . 's';
        if($v == 1)$ret[] = $v . $k;
        }
    array_splice($ret, count($ret)-1, 0, 'and');
    $ret[] = 'ago.';

    return join(' ', $ret);
}

使用示例:

$seconds = strtodate($db['post_date']);

echo time_elapsed_B(time() - $seconds);