我从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
我不知道如何实现这一目标。任何帮助都会得到满足。
提前致谢
答案 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');
?>
答案 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));