【发布时间】:2016-05-07 21:28:34
【问题描述】:
这是时间在数据库中的显示方式:
2016-05-07 21:18:21
现在,它是这样转换它的:
function time_elapsed_string($datetime) {
$now = new DateTime;
$ago = new DateTime($datetime);
$diff = $now->diff($ago);
$diff->w = floor($diff->d / 7);
$diff->d -= $diff->w * 7;
$string = array(
'y' => 'year',
'm' => 'month',
'w' => 'week',
'd' => 'day',
'h' => 'hour',
'i' => 'minute',
's' => 'second',
);
foreach ($string as $k => &$v) {
if ($diff->$k) {
$v = $diff->$k . ' ' . $v . ($diff->$k > 1 ? 's' : '');
} else {
unset($string[$k]);
}
}
$string = array_slice($string, 0, 1);
return $string ? implode(', ', $string) . ' ago' : 'just now';
}
当我这样做时,它会转换一切。但我希望它只显示多少秒、多少分钟、多少小时,如果是 24 小时,那么它是 1 天和 1 天。我希望它以这种格式显示的所有其他内容:F j, Y g:ia
【问题讨论】:
-
你能详细说明一下吗? “只显示数字 1,而不是 2 周……”是什么意思?另外,您尝试过什么?
-
我刚刚编辑了操作。对此感到抱歉
-
我想我有个主意。如果你在几天内得到差异。 if(diff>=1){ echo "one day"} esleif(diff>=7){ echo "one week" } esleif(diff>=30){ echo "one month" }....在这里但试一试,不想让它成为答案,因为我不确定这是你想要的
-
等等... if 需要反过来。首先与 30 比较,然后是 7,然后是 1。否则 1 将始终为真
-
@Andreas 是的,你有这个想法,但我希望它只显示多少秒、多少分钟、多少小时,如果是 24 小时,那么它是 1 天和 1 天。我希望它以这种格式显示的所有其他内容:F j, Y g:ia