PHP에서 타임스탬프를 상대 날짜/시간으로 변환하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-11-28 00:00:16
원래의
308명이 탐색했습니다.

How to Convert Timestamps to Relative Date/Time in PHP?

PHP: 타임스탬프를 상대 날짜/시간으로 변환

상대 타임스탬프는 특정 시점과 현재 순간 사이에 경과된 시간을 나타냅니다. 특히 과거에 발생했거나 미래에 발생할 이벤트의 경우 절대 타임스탬프보다 더 사용자 친화적인 시간 표현을 제공합니다.

PHP에서 상대 타임스탬프를 생성하려면 다음 함수 사용을 고려하세요.

function time2str($ts)
{
    if (!ctype_digit($ts)) {
        $ts = strtotime($ts);
    }

    $diff = time() - $ts;
    if ($diff == 0) {
        return 'now';
    } elseif ($diff > 0) {
        // Past timestamps
        $day_diff = floor($diff / 86400);
        if ($day_diff == 0) {
            if ($diff < 60) {
                return 'just now';
            } elseif ($diff < 120) {
                return '1 minute ago';
            } elseif ($diff < 3600) {
                return floor($diff / 60) . ' minutes ago';
            } elseif ($diff < 7200) {
                return '1 hour ago';
            } elseif ($diff < 86400) {
                return floor($diff / 3600) . ' hours ago';
            }
        } elseif ($day_diff == 1) {
            return 'Yesterday';
        } elseif ($day_diff < 7) {
            return $day_diff . ' days ago';
        } elseif ($day_diff < 31) {
            return ceil($day_diff / 7) . ' weeks ago';
        } elseif ($day_diff < 60) {
            return 'last month';
        } else {
            return date('F Y', $ts);
        }
    } else {
        // Future timestamps
        $diff = abs($diff);
        $day_diff = floor($diff / 86400);
        if ($day_diff == 0) {
            if ($diff < 120) {
                return 'in a minute';
            } elseif ($diff < 3600) {
                return 'in ' . floor($diff / 60) . ' minutes';
            } elseif ($diff < 7200) {
                return 'in an hour';
            } elseif ($diff < 86400) {
                return 'in ' . floor($diff / 3600) . ' hours';
            }
        } elseif ($day_diff == 1) {
            return 'Tomorrow';
        } elseif ($day_diff < 4) {
            return date('l', $ts);
        } elseif ($day_diff < 7 + (7 - date('w'))) {
            return 'next week';
        } elseif (ceil($day_diff / 7) < 4) {
            return 'in ' . ceil($day_diff / 7) . ' weeks';
        } elseif (date('n', $ts) == date('n') + 1) {
            return 'next month';
        } else {
            return date('F Y', $ts);
        }
    }
}
로그인 후 복사

이 함수는 타임스탬프를 받아들이고 상대 타임스탬프를 출력합니다. 과거 및 미래 타임스탬프를 모두 처리하고 "1시간 전" 또는 "2일 후"와 같은 다양한 형식으로 출력을 제공합니다.

위 내용은 PHP에서 타임스탬프를 상대 날짜/시간으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿