PHP 웹페이지에서 “12분 전” 표시하는 방법

시간은 사용자 인터페이스의 필수적인 측면으로, 특히 웹 애플리케이션에서는 이벤트 발생 이래 경과된 적절한 시간을 표시하는 것이 사용자 경험을 향상시킵니다. 이를 나타내는 일반적인 방법은 “12분 전” 또는 “5초 전” 같은 메시지를 표시하는 것입니다. 이 블로그 포스트에서는 PHP 애플리케이션에서 이 기능을 구현하는 방법을 알아보겠습니다.

경과 시간 형식 사용의 이유

경과 시간을 형식으로 표시하는 데에는 여러 가지 장점이 있습니다:

  • 명확성: 사용자가 혼란스러워 할 수 있는 특정 날짜 및 시간을 표시하는 대신, 경과된 시간은 직관적입니다.
  • 관련성: 이벤트와 관련된 즉각적인 맥락을 제공하여 사용자가 정보의 시의성을 이해하도록 돕습니다(예: 게시물이 얼마나 최근인지).
  • 간결성: 짧은 시간 메시지는 인터페이스를 깔끔하고 사용자 친화적으로 유지합니다.

해결책: 경과 시간 함수 구현하기

“12분 전"과 같은 메시지를 표시하기 위해, 이벤트 이후 경과된 초 수를 입력으로 받고, 그에 해당하는 사람이 읽을 수 있는 문자열을 반환하는 PHP 함수를 time_since()라는 이름으로 만들 수 있습니다.

다음은 PHP에서의 함수 예시입니다:

function time_since($since) {
    $chunks = array(
        array(60 * 60 * 24 * 365 , 'year'),
        array(60 * 60 * 24 * 30 , 'month'),
        array(60 * 60 * 24 * 7, 'week'),
        array(60 * 60 * 24 , 'day'),
        array(60 * 60 , 'hour'),
        array(60 , 'minute'),
        array(1 , 'second')
    );

    for ($i = 0, $j = count($chunks); $i < $j; $i++) {
        $seconds = $chunks[$i][0];
        $name = $chunks[$i][1];
        if (($count = floor($since / $seconds)) != 0) {
            break;
        }
    }

    $print = ($count == 1) ? '1 '.$name : "$count {$name}s";
    return $print;
}

함수 분석

  1. 시간 청크 정의: 이 함수는 $chunks라는 배열을 정의합니다. 이 배열은 다양한 시간 간격과 해당하는 레이블(즉, 연도, 월, 주, 일, 시간, 분, 초)을 저장합니다. 이러한 간격은 경과 시간을 표현하는 데 도움이 됩니다.

  2. 경과 시간 계산: 루프가 $chunks 배열을 반복하여 지나간 초 수에 해당하는 가장 큰 시간 단위를 찾습니다. 함수는 주어진 시간에 얼마나 많은 해당 단위가 들어가는지를 계산합니다.

  3. 출력 형식 지정: 적절한 시간 단위가 발견되면 함수는 반환 문자열을 형식화합니다. 시간이 단수일 때(예: “1분”)는 복수형을 피하고, 그렇지 않으면 끝에 ’s’를 추가합니다(예: “2분”).

예제 사용법

이 함수를 사용하려면 초 수를 인수로 하여 호출하면 됩니다. 예를 들면:

echo time_since(720); // 출력: "12분 전"
echo time_since(5);   // 출력: "5초 전"

이 방법은 사용자가 한눈에 이해할 수 있는 형식으로 이벤트 발생 시간 정보를 쉽게 표시합니다.

결론

단순한 time_since() 함수를 구현하면 PHP 애플리케이션에서 시간을 표시하는 방식을 크게 향상시킬 수 있습니다. 이 기능은 필요한 맥락을 제공할 뿐 아니라, 더 매력적이고 친근한 사용자 경험을 창출합니다. 경과 시간 형식을 활용하여 사용자가 상호작용하는 콘텐츠의 시의성을 쉽게 이해할 수 있는 매력적인 인터페이스를 만들 수 있습니다.

필요에 따라 이 기능을 조정하고 확장하여 웹 애플리케이션을 더 사용자 친화적이고 정보성 있게 만들어보세요. 즐거운 코딩 되세요!