diffForHumans
의 출력은 사람과 사람에게있어서 우리가 알고있는 것처럼 끔찍한 계산기입니다. 하지 마. 다음과 같이
이
\Carbon
의 배열을 감안할 때, 당신은 당신의 값을 계산할 수있다 :
$carbons = [ ... ];
$diffs = array_map(function ($c) { return $c->diffInSeconds(); }, $carbons);
$max = $carbons[array_search(max($diffs), $diffs)];
$min = $carbons[array_search(min($diffs), $diffs)];
$avg = array_sum($diffs)/count($diffs);
당신이 주장하고 diffForHumans
의 출력을 정렬 할 경우, 수정 및 숫자 값 오프 입력 할 수 있습니다. 일단 주문, 당신은 최대 최소를 이동하고 팝업 수 있습니다 diffForHumans
출력이 짧은 형식이 될 수 있다는 것을 염두에
function score($c) {
$scores = [ 1 => 'second', 'minute', 'hour', 'day', 'week', 'month', 'year' ];
$diff = $c->diffForHumans();
foreach ($scores as $multiplier => $word) {
if (false !== strpos($diff, $word)) {
return $multiplier * (int)$diff;
}
}
return (int)$diff;
}
usort(
$carbons,
function ($a, $b) { return score($a) <=> score($b); }
);
베어 (예를 들어, 대신 'day'
의 'd'
)뿐만 아니라 다른 언어로 번역. 따라서 출력을 조심스럽게 조작해야합니다.
참고 : 위 코드는 정신적으로 만 컴파일되었습니다.
그래서 근본적으로 diffInSeconds를 사용하여 비교해 봅니다 (정수)? 이렇게 간단하고 나는 실제적인 결함, 최고를 볼 수 없다. 당신은 구현하려고 시도한 해결 방법을 믿지 않을 것입니다 ... 나는 내일 시도 할 것이지만 아마도 감사해야 할 것입니다! 그리고 한 가지 수사학적인 질문 : 왜 이것과 비슷한 것이 Carbon으로 구현되지 않았습니까? – dbr
나는 Carbon이 근본적으로 시간 *에 관한 것이기 때문에 Carbon에이 능력이 없다고 상상해보십시오. 반면에 원하는 작업은 시간의 인스턴스를 수집합니다 *. – bishop