2014-10-06 38 views
0

我知道这个问题已经被问了几次,我发现很多教程,博客文章有关转换时间戳在PHP前的时间..转换时间戳到前在php?

我已经试过无数的代码并没有什么似乎为我工作...

我要么得到没有任何错误(我有错误rerposting我的PHP页面上),或者我在页面上得到一些陌生号码一个空白页..

所以我认为这里有人可以在此洒下的光我..

基本上我是这样保存日期:

$date = date('Y-m-d H:i:s'); 

我只是将它保存在MySQL数据库......

和我赞同它像这样:所以现在我需要知道

echo $date; 

是我怎么可以转换回声$日期;到1分钟前,10分钟前,1小时前等等,每当页面关闭并重新打开?

我确实尝试了很多功能,我发现谷歌和中午似乎做任何事情!

可能有人请告知这个问题?

感谢

编辑:

我用这个代码在回答说,但我仍然得到$日期回声版完全相同的方式作为其存储在为这种格式的数据库时间:2014年-10-06二十二时54分54秒

$date = date('Y-m-d H:i:s'); 

$time1 = new DateTime($date); 
$now = new DateTime(); 
$interval = $time1->diff($now); 


if ($interval->y) $date = $interval->y . ' years'; 
elseif ($interval->m) $date = $interval->m . ' months'; 
elseif ($interval->d) $date = $interval->d . ' days'; 
elseif ($interval->h) $date = $interval->h . ' hours'; 
elseif ($interval->i) $date = $interval->i . ' minutes'; 


echo $date; 
+1

http://php.net/manual/en/class.dateinterval.php和http:// PHP。 net/manual/en/class.datetime.php +函数'diff'它 – Cheery 2014-10-06 21:57:33

+0

@Cheery,不知道我在看哪个页面队友!有点深入的解释会在这里适合我认为... – shell 2014-10-06 22:02:47

+0

仔细看..例如这里'$ d1 = new \ DateTime(“2013-07-31 10:29:00”); $ d2 = new \ DateTime(“2013-08-02 5:32:12”); echo $ d1-> diff($ d2) - > d;' – Cheery 2014-10-06 22:03:52

回答

0

您应该使用DateTime类来获得2倍,即之间的差异;

$time1 = new DateTime('2014-10-06 09:00:59'); 
$now = new DateTime(); 
$interval = $time1->diff($now,true); 

,然后使用该差值(它是一个对象DateInterval$interval),以找到这样的最小时间差;

if ($interval->y) echo $interval->y . ' years'; 
elseif ($interval->m) echo $interval->m . ' months'; 
elseif ($interval->d) echo $interval->d . ' days'; 
elseif ($interval->h) echo $interval->h . ' hours'; 
elseif ($interval->i) echo $interval->i . ' minutes'; 
else echo "less than 1 minute"; 

应该回声(写作时)13 hours

希望这会有所帮助。

+0

与您的第一个代码我得到致命错误:调用未定义的方法DateTime :: diff()错误在我的页面上。 – shell 2014-10-06 22:15:02

+0

面包屑,你使用的是什么版本的PHP? – worldofjr 2014-10-06 22:17:28

+0

大概5.2或5.3 ..它的一个旧的测试服务器..没什么特别的.. – shell 2014-10-06 22:18:49

0

检查这项功能INTVAL() - http://php.net/manual/en/function.intval.php 下面的代码应该帮助你

$seconds_ago = (time() - strtotime('2014-01-06 15:25:08')); 

if ($seconds_ago >= 31536000) { 
    echo "Seen " . intval($seconds_ago/31536000) . " years ago"; 
} elseif ($seconds_ago >= 2419200) { 
    echo "Seen " . intval($seconds_ago/2419200) . " months ago"; 
} elseif ($seconds_ago >= 86400) { 
    echo "Seen " . intval($seconds_ago/86400) . " days ago"; 
} elseif ($seconds_ago >= 3600) { 
    echo "Seen " . intval($seconds_ago/3600) . " hours ago"; 
} elseif ($seconds_ago >= 60) { 
    echo "Seen " . intval($seconds_ago/60) . " minutes ago"; 
} else { 
    echo "Seen less than a minute ago"; 
}