ホームページ >バックエンド開発 >PHPチュートリアル >PHP で Unix タイムスタンプから人間が判読できる相対日付と時刻を生成するにはどうすればよいですか?
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 中国語 Web サイトの他の関連記事を参照してください。