PHP: 타임스탬프에서 상대 날짜/시간 생성
PHP에서 타임스탬프를 시간을 정확하게 나타내는 상대 날짜/시간 문자열로 변환 과거와 미래 타임스탬프의 차이는 어려울 수 있습니다. task.
상대 날짜/시간 형식
원하는 상대 날짜/시간 문자열 형식에는 다음이 포함되어야 합니다.
해결책
다음 함수 time2str은 상대 날짜/시간을 효율적으로 생성합니다. 문자열:
function time2str($ts) { // Convert to timestamp if not already if (!ctype_digit($ts)) { $ts = strtotime($ts); } // Calculate difference between current time and timestamp $diff = time() - $ts; // Past Timestamps if ($diff > 0) { $day_diff = floor($diff / 86400); switch ($day_diff) { case 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'; } break; case 1: return 'Yesterday'; default: if ($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); } } } // Future Timestamps else { $diff = abs($diff); $day_diff = floor($diff / 86400); switch ($day_diff) { case 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'; } break; case 1: return 'Tomorrow'; default: if ($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); } } } }
사용 예
echo time2str('2023-09-20 10:00:00'); // Output: "in 27 days" echo time2str('2022-09-20 10:00:00'); // Output: "last year" echo time2str('2022-09-20T10:00:00+00:00'); // Output: "last year"
위 내용은 PHP의 타임스탬프에서 상대 날짜/시간 문자열을 어떻게 생성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!