PHP에서는 Unix 타임스탬프를 사람이 읽을 수 있는 상대 날짜/시간 문자열로 변환하는 것이 일반적인 작업입니다. 그러나 과거와 미래의 변환을 모두 처리하는 유연한 스크립트를 만드는 것은 어려울 수 있습니다.
다음 함수 time2str은 타임스탬프를 "2주 전" 또는 "이후"와 같은 상대 날짜/시간 문자열로 변환하여 이러한 요구를 해결합니다. 10분 15초."
function time2str($ts) { // Convert string timestamp to integer if (!ctype_digit($ts)) { $ts = strtotime($ts); } $diff = time() - $ts; // Handle present, past, and future conversions if ($diff == 0) { return 'now'; } elseif ($diff > 0) { // Past: "X days/weeks/months ago" $day_diff = floor($diff / 86400); switch ($day_diff) { case 0: return relativeMinutes($diff); case 1: return 'Yesterday'; case $day_diff < 7: return "$day_diff days ago"; case $day_diff < 31: return ceil($day_diff / 7) . ' weeks ago'; case $day_diff < 60: return 'last month'; default: return date('F Y', $ts); } } else { // Future: "after X days/weeks/months" $diff = abs($diff); $day_diff = floor($diff / 86400); switch ($day_diff) { case 0: return relativeMinutes($diff, true); case 1: return 'Tomorrow'; case $day_diff < 4: return date('l', $ts); case $day_diff < 7 + (7 - date('w')) : return 'next week'; case ceil($day_diff / 7) < 4: return 'in ' . ceil($day_diff / 7) . ' weeks'; case date('n', $ts) == date('n') + 1: return 'next month'; default: return date('F Y', $ts); } } } // Helper to generate relative minute/second strings function relativeMinutes($diff, $future = false) { if ($diff < 60) { return 'just now'; } else if ($diff < 120) { return '1 minute' . (($future) ? ' ago' : ''); } else { return floor($diff / 60) . ' minutes' . (($future) ? ' ago' : ''); } }
이 함수는 "지금 막", "1분 후"와 같은 극단적인 경우를 처리합니다. 또한 과거 및 미래 날짜에 대해 다양한 상대 문자열을 제공하므로 다양한 애플리케이션에 유연하게 사용할 수 있습니다.
위 내용은 PHP의 Unix 타임스탬프에서 사람이 읽을 수 있는 상대 날짜 및 시간을 어떻게 생성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!