php中两个日期之间的区别

时间:2013-12-09 06:33:30

标签: php date

我从mysql数据库中选择了一个dateTime,我希望从现在开始不同。

php函数date_diff适合区别但我想要输出如下 其实我想在系统中显示登录的最后几点。

first date: 2013-12-07 12:26:10
Another date: Today

输出应为:

20 min
or
1 hour
or 
2 hour
or 
6 hour
or 
Yesterday
or
2 days ago

我不知道如何实现这一目标。任何帮助都会得到满足。

提前致谢

3 个答案:

答案 0 :(得分:1)

下面是一个将时间转换为人类可读时间的功能,如2013-12-07 12:26:10。您可以编辑它以达到您的要求

<?php
function ToHumanReadable($timestamp){
    $difference = time() - strtotime($timestamp);
    $periods = array("sec", "min", "hour", "day", "week", "month", "years", "decade");
    $lengths = array("60","60","24","7","4.35","12","10");

    if ($difference > 0) { // this was in the past
        $ending = "ago";
    } else { // this was in the future
        $difference = -$difference;
        $ending = "to go";
    }       
    for($j = 0; $difference >= $lengths[$j]; $j++) $difference /= $lengths[$j];
    $difference = round($difference);
    if($difference != 1) $periods[$j].= "s";
    $text = $difference." ".$periods[$j]." ".$ending;
    return $text;
}
echo ToHumanReadable('2013-12-07 12:26:10'); 
?>

http://www.weberdev.com/get_example.php3?ExampleID=4769

答案 1 :(得分:1)

从PHP版本&gt; 5添加新的日期/时间函数以获得差异:

$datetime1 = new DateTime("2010-06-20");
$datetime2 = new DateTime("2011-06-22");
$difference = $datetime1->diff($datetime2);

echo 'Difference: '.$difference->y.' years, ' 
                   .$difference->m.' months, ' 
                   .$difference->d.' days';

print_r($difference);

结果如下:

Difference: 1 years, 0 months, 2 days
DateInterval Object
(
    [y] => 1
    [m] => 0
    [d] => 2
    [h] => 0
    [i] => 0
    [s] => 0
    [invert] => 0
    [days] => 367
)

答案 2 :(得分:0)

检查这个

 $date1 = strtotime('2013-12-07 12:26:10');
 $date2 = time();

 $diff = abs($date2 - $date1);
 $years = floor($diff / (365*60*60*24));
 $months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));
 $days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));
 die(var_dump($days));