我知道这个问题已经被问过好几次了,我发现了很多关于在 php 中将时间戳转换为之前时间的教程、博客文章。
我尝试了无数的代码,但似乎没有什么对我有用......
我要么得到一个没有错误的空白页面(我的 php 页面上重新发布时出错),要么在我的页面中得到一些奇怪的数字。
所以我想这里有人可以为我阐明这一点..
基本上我是这样保存日期的:
$date = date('Y-m-d H:i:s');
我只是将它保存在mysql数据库中......
我像这样回应它:
echo $date;
所以现在我需要知道的是如何转换 echo $date;每次页面关闭并重新打开时,例如 1 分钟前、10 分钟前、1 小时前等?
我确实尝试了很多在谷歌上找到的功能,中午似乎做了任何事情!
有人可以就这个问题提出建议吗?
Thanks
EDIT:
我按照答案中所述使用了此代码,但我仍然得到 $date 回显的方式与其存储在数据库中的方式完全相同,格式如下:2014-10-06 22: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;
您应该使用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
.
希望这可以帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)