【发布时间】:2012-09-28 10:05:57
【问题描述】:
我想做 StackOverflow 正在做的事情,它准确地说明了自上次发布以来已经过去了多长时间。不过有一个问题,SO 会根据上一篇文章的发布时间显示某些信息——例如,如果一篇文章不到一天前,他们会发布上一篇文章的几小时前;如果帖子不到一小时前,他们会发布几分钟前的帖子,等等。
我正在使用以下格式的 MYSQL 日期时间字段:
2012-09-19 13:28:45
我想将上面的时间与时间NOW 进行比较,因此我使用 PHP 的 strtotime 函数转换了该时间,并尝试通过我放在一起的函数比较两个日期(如下)。当然,这可能是最糟糕的方法,但在阅读了 PHP 的 Date 和 DateTime 函数后,我开始变得非常非常困惑。
function get_date_format($strToTimeString){
$minute = 60;
$hour = $minutes * 60;
$day = $hour * 24;
$week = $day * 7;
$month = $week * 4;
$year = $month * 12;
$timeNow = strtotime("now");
$timeDiff = $timeNow - $strToTimeString;
if($timeDiff > $minute){
if($timeDiff > $hour){
if($timeDiff > $day){
if($timeDiff > $week){
if($timeDiff > $month){
if($timeDiff > $year){
// Years ago
}
else{
// Months ago
}
}
else{
// Weeks ago
}
}
else{
// Days ago
}
}
else
{
// Hours ago
}
}
else{
// Minutes ago
}
}
else{
// Seconds ago
}
}
有没有更好的方法来做到这一点?正如我上面提到的,我在尝试使用DateTime->diff时没有运气
非常感谢任何帮助。
【问题讨论】:
-
这个类可能会有所帮助。它有一个格式化方法。 php.net/manual/en/class.dateinterval.php
标签: php mysql datetime compare