ホームページ >バックエンド開発 >PHPチュートリアル >PHPで日付からの経過時間を計算してフォーマットするにはどうすればよいですか?

PHPで日付からの経過時間を計算してフォーマットするにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-16 15:04:10123ブラウズ

How to Calculate and Format Elapsed Time Since a Date in PHP?

PHP での日付時刻からの経過時間を調べる

特定の日時からの経過時間を求めることは、さまざまなアプリケーションで役立ちます。イベントが発生してからの時間を表示するなど。 PHP には、ユーザーフレンドリーな方法で経過時間を計算して書式設定する方法があります。

経過時間の計算

指定された日付間の経過時間を計算するには時刻と現在時刻を比較するには、strtotime() 関数を使用して日付時刻の文字列表現をタイムスタンプに変換できます。その後、現在のタイムスタンプからタイムスタンプを減算できます。これは、Unix エポック (協定世界時 1970 年 1 月 1 日) からの現在時刻を秒単位で表します。

例:

$time = strtotime('2010-04-28 17:25:43');
$elapsedTime = time() - $time;

経過時間をフォーマットします

経過時間を取得したら秒数として指定すると、使いやすい方法でフォーマットできます。一般的なアプローチは、秒を分、日、年などの単位に変換することです。ループを使用して、単位とそれに対応する秒数のリストを反復処理し、適切な単位とその値を返すことができます。

たとえば、次の関数は経過時間を計算してフォーマットします。

function humanTiming($time) {
    $tokens = array (
        31536000 => 'year',
        2592000 => 'month',
        604800 => 'week',
        86400 => 'day',
        3600 => 'hour',
        60 => 'minute',
        1 => 'second'
    );

    foreach ($tokens as $unit => $text) {
        if ($time < $unit) continue;
        $numberOfUnits = floor($time / $unit);
        return $numberOfUnits.' '.$text.(($numberOfUnits>1)?'s':'');
    }
}

使用例

この関数を使用するには、単にタイムスタンプを引数:

$time = strtotime('2010-04-28 17:25:43');
echo 'Event happened '.humanTiming($time).' ago';

「4 日前にイベントが発生」や「1 分前にイベントが発生」など、ユーザーの表示に適した形式で経過時間が出力されます。

以上がPHPで日付からの経過時間を計算してフォーマットするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。