解决huamn函数无法格式未来时的问题

pull/348/head
Henry 2021-08-05 16:03:24 +08:00
parent 1d7c7d7ce6
commit 75141e192d
2 changed files with 23 additions and 12 deletions

View File

@ -114,6 +114,13 @@ return [
'%d week%s ago' => '%d周前', '%d week%s ago' => '%d周前',
'%d month%s ago' => '%d月前', '%d month%s ago' => '%d月前',
'%d year%s ago' => '%d年前', '%d year%s ago' => '%d年前',
'%d second%s after' => '%d秒后',
'%d minute%s after' => '%d分钟后',
'%d hour%s after' => '%d小时后',
'%d day%s after' => '%d天后',
'%d week%s after' => '%d周后',
'%d month%s after' => '%d月后',
'%d year%s after' => '%d年后',
'Set to normal' => '设为正常', 'Set to normal' => '设为正常',
'Set to hidden' => '设为隐藏', 'Set to hidden' => '设为隐藏',
'Recycle bin' => '回收站', 'Recycle bin' => '回收站',

View File

@ -124,25 +124,29 @@ class Date
*/ */
public static function human($remote, $local = null) public static function human($remote, $local = null)
{ {
$timediff = (is_null($local) || $local ? time() : $local) - $remote; $time_diff = (is_null($local) || $local ? time() : $local) - $remote;
$chunks = array( $tense = $time_diff < 0 ? 'after' : 'ago';
array(60 * 60 * 24 * 365, 'year'), $time_diff = abs($time_diff);
array(60 * 60 * 24 * 30, 'month'), $chunks = [
array(60 * 60 * 24 * 7, 'week'), [60 * 60 * 24 * 365, 'year'],
array(60 * 60 * 24, 'day'), [60 * 60 * 24 * 30, 'month'],
array(60 * 60, 'hour'), [60 * 60 * 24 * 7, 'week'],
array(60, 'minute'), [60 * 60 * 24, 'day'],
array(1, 'second') [60 * 60, 'hour'],
); [60, 'minute'],
[1, 'second']
];
$name = 'second';
$count = 0;
for ($i = 0, $j = count($chunks); $i < $j; $i++) { for ($i = 0, $j = count($chunks); $i < $j; $i++) {
$seconds = $chunks[$i][0]; $seconds = $chunks[$i][0];
$name = $chunks[$i][1]; $name = $chunks[$i][1];
if (($count = floor($timediff / $seconds)) != 0) { if (($count = floor($time_diff / $seconds)) != 0) {
break; break;
} }
} }
return __("%d {$name}%s ago", $count, ($count > 1 ? 's' : '')); return __("%d $name%s $tense", $count, ($count > 1 ? 's' : ''));
} }
/** /**