タイムスタンプを相対時間文字列に変換すると、情報をより使いやすい形式で表示するのに役立ちます。 PHP では、これを実現するために使用できる関数とアプローチがいくつかあります。
一般的なアプローチの 1 つは、strtotime() 関数を使用して、タイムスタンプの文字列表現を Unix タイムスタンプ形式 (秒数) に変換することです。 Unix エポック、1970 年 1 月 1 日 00:00:00 UTC 以降)。その後、gmdate() や date() などの関数を使用して Unix タイムスタンプをフォーマットできます。これは、タイムスタンプが特殊なフォーマットの場合に有益です。
あるいは、DateTime() クラスを使用して変換することもできます。タイムスタンプまたは日付文字列を PHP DateTime オブジェクトに挿入します。 DateTime クラスは、日付と時刻を操作および書式設定するためのさまざまなメソッドを提供します。タイムスタンプを表す DateTime オブジェクトと現在時刻を比較することで、経過時間を計算し、相対時間文字列を構築できます。
これは、DateTime クラスを使用してタイムスタンプを以前の文字列に変換する関数の例です。 :
function time_elapsed_string($datetime, $full = false) { $now = new DateTime; $ago = new DateTime($datetime); $diff = $now->diff($ago); $diff->w = floor($diff->d / 7); $diff->d -= $diff->w * 7; $string = array( 'y' => 'year', 'm' => 'month', 'w' => 'week', 'd' => 'day', 'h' => 'hour', 'i' => 'minute', 's' => 'second', ); foreach ($string as $k => &$v) { if ($diff->$k) { $v = $diff->$k . ' ' . $v . ($diff->$k > 1 ? 's' : ''); } else { unset($string[$k]); } } if (!$full) $string = array_slice($string, 0, 1); return $string ? implode(', ', $string) . ' ago' : 'just now'; }
この関数は、タイムスタンプまたは日付文字列を引数として受け取り、相対時間文字列を返します。 $full 引数を true に設定すると、関連するすべての時間単位を含むより詳細な文字列を取得できます。それ以外の場合は、関連する最大の時間単位のみが含まれます。
使用例:
echo time_elapsed_string('2013-05-01 00:22:35'); echo time_elapsed_string('@1367367755'); # timestamp input echo time_elapsed_string('2013-05-01 00:22:35', true);
出力:
4 months ago 4 months ago 4 months, 2 weeks, 3 days, 1 hour, 49 minutes, 15 seconds ago
この関数は、シンプルでカスタマイズ可能な方法を提供します。 PHP でタイムスタンプを相対時間文字列に変換します。これを使用すると、時間に敏感な情報をユーザーに対して明確かつ簡潔な方法で表示できます。
以上がPHP でタイムスタンプを「以前」の文字列に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。