【发布时间】:2011-07-17 15:52:51
【问题描述】:
我正在尝试创建一个函数,将日期与当前时间进行比较,并返回一个格式良好的字符串。
我匆忙编写了一些代码并且它可以工作,但我正在尝试找到一种更有效的方法。这是我的代码:
function _formatDate($dateStr)
{
$timestr = "";
$t= time() - strtotime($dateStr);
if($t < 60) {
$timestr = "{$t} seconds ago";
}
elseif ($t <120) {
$timestr = "about a minute ago";
}
elseif ($t < 3600) {
$minute = floor($t/60);
$timestr = "{$minute} minutes ago";
}
elseif ($t < 7200) {
$timestr = " about an hour ago";
}
elseif ($t < 86400) {
$hour = floor($t/3600);
$timestr = "{$hour} hours ago";
}
elseif ($t < 172800) {
$timestr = "a day ago";
}
elseif ($t < 2592000) {
$day = floor($t/86400);
$timestr = "{$day} days ago";
}
elseif ($t < 5184000){
$timestr = "about a month ago";
}
else {
$month = floor($t/2592000);
$timestr = "{$month} months ago";
}
return $timestr;
}
【问题讨论】:
-
我正在尝试将日期作为参数传递并让它自动返回,例如:22 分钟前或 3 天前
-
那么你的代码有什么问题?似乎按照你的要求做。如果这是用于网页,则输出为日期/时间戳,然后使用 JS(和 TimeAgo 之类的库)来更新值可能是有益的。
-
我想知道是否有更有效的方法来做到这一点,没有那么多 if else 语句。
-
高效很难定义... 更少的行 - 当然。更容易理解 - 有问题。需要较少的处理 - 不太可能。