ホームページ > バックエンド開発 > PHPチュートリアル > PHPでタイムスタンプを相対日付/時刻に変換するにはどうすればよいですか?

PHPでタイムスタンプを相対日付/時刻に変換するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-28 00:00:16
オリジナル
334 人が閲覧しました

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート