将时间戳转换为相对时间字符串对于以更用户友好的格式显示信息非常有用。在 PHP 中,您可以使用多种函数和方法来实现此目的。
一种流行的方法是使用 strtotime() 函数将时间戳的字符串表示形式转换为其 Unix 时间戳格式(秒数)自 Unix 纪元(UTC 时间 1970 年 1 月 1 日 00:00:00)开始。然后,您可以使用 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 中将时间戳转换为'Time Ago”字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!