2011-10-18 207 views
1

假设我有一个有趣的视频网站向用户显示有趣的视频。在每个视频下方,我希望根据视频的时间戳和当前时间,发布“5秒前”,“31分钟前”,“昨天”,“2天前”等声明。我的格式是:2011-10-17 07:08:00日期和当前时间的时差?

我对日期并不太满意,但我猜测我需要找到两秒之间的日期/时间之差,然后决定是否在0秒之间以秒为单位显示60秒,或在60秒之间显示& 3600秒以分钟显示,或者3600秒之间显示3600x24秒之间3600x24秒显示以小时为单位,3600x24秒之间显示3600x24x2秒之间3600x24x2秒之前显示昨天,等等......我相信我应该使用strtotime(),但我似乎无法找到当前时间作为那些解决方案我发现使用new date()似乎不工作!

我该怎么做?

顺便说一句,当我将2011-10-17, 7:08PM EDT插入到MySQL时间戳列时,它会被转换为2011-10-17 07:08:00即AM。我怎样才能将它存储在正确的AM/PM中?

+0

[如何以可读格式表示两个日期之间的差异]的可能重复(http://stackoverflow.com/questions/6542931/how-to-express-the-difference-between-two-dates在人类可读的格式) – JJJ

+3

我喜欢第一句话。是否有趣的视频网站正在播放有趣的视频,这是问题的组成部分? :) – Alex

+2

让我们假设:) – 0xCAFEBABE

回答

9

您可以使用php的DateTime函数。

$datetime1 = new DateTime('2011-10-17 07:08:00'); 
$datetime2 = new DateTime(); 
$interval = $datetime1->diff($datetime2); 
echo $interval->format('%R%a days'); 

从这里你可以使用一些if语句来输出的时间差以另一种格式(秒,分钟,小时,月等),这取决于实际的时间差!输出的格式是找到here

2

您可以非常容易地使用MySQL的DATEDIFFTIMEDIFF函数。两者一起告诉你到底有多少时间过去了。