【发布时间】:2015-08-04 18:48:52
【问题描述】:
我正在创建一个票务系统,现在我正在尝试呼应票的年龄。 门票日期/时间作为时间戳存储在数据库中。 我找到了这段代码:
function time_elapsed_string($datetime, $full = false) {
$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]);
}
}
if (!$full) $string = array_slice($string, 0, 1);
return $string ? implode(', ', $string) . ' ago' : 'just now';
}
在这个页面上:Converting timestamp to time ago in PHP e.g 1 day ago, 2 days ago...
我说的是 Glavić 的回答。 他说:
Output:
4 months ago
4 months, 2 weeks, 3 days, 1 hour, 49 minutes, 15 seconds ago
但我得到的唯一输出是 3 天或 1 小时。 我需要的输出是:
Only minutes old: 45 minutes
Hours and minutes old: 2 hours 22 minutes
Days, hours and minutes old: 3 days 3 hours (don't show the minutes)
当它超过一个月或一年时,它应该在几天内不断回显它:45 天 22 小时或 586 天 4 小时
这可能吗?我真的希望我的问题足够清楚,感谢您的帮助!
【问题讨论】: