Convert Timestamp to Time Ago Format in PHP
Many web applications like social media apps and messaging apps use "Time Ago" format to display time of posts, comments and other actions users made. Learn how to convert a timestamp in PHP to time ago format.

Showing a timestamp in "Time Ago" format in web applications has many advantages. One reason most web applications use it to avoid confusion for users in different time zones than the user who published a post or commented on a post. This post demonstrates how to create a PHP time ago function to convert timestamp to "time ago" format.
PHP Function to Convert Timestamp to 'Time Ago' Format
Time ago format is useful to display PHP DateTime in a human readable format which is easier to understand for website users and avoids the confusion for users from different time zones. Following are the steps to convert timestamp to time ago format in PHP:
- Create a function with
to_time_ago_format()name. - Store the difference of current time and provided timestamp in a
$ago_from_nowvariable. - Check if
$ago_from_nowis less than one, then it is a less than one second value. Return "Just now" from here and skip further code execution. - Declare a variable
$time_agoin order to store time ago string and initially assign it aNULLvalue. - Declare variables for interval units for second, minute, hour, week, day, month and year.
- Create an associative array
$time_intervalsto store interval units being the keys and values as desired or relevant string value for each interval unit. - Sort the
$time_intervalsarray in descending order so we have the largest key value as first entry and smallest key as last entry. This is important to return the correct string. You can also declare this array in reverse order to skip sorting. - Loop through each entry in
$time_intervalsarray and check if$ago_from_nowis greater than or equal interval unit key in array. - If the above condition matches then assign the correct string to
$time_agovariable. - Finally return the
$time_agostring from function.
/**
* @param int $timestamp
* @return string|null
*
*/
function to_time_ago_format(int $timestamp): ?string
{
$ago_from_now = time() - $timestamp;
// If time difference is less than one second return "Just now"
if ($ago_from_now < 1) {
return 'Just now';
}
$time_ago = NULL;
// Define the time intervals (in seconds)
$second = 1;
$minute = 60 * $second;
$hour = 60 * $minute;
$day = 24 * $hour;
$week = 7 * $day;
$month = 30 * $day;
$year = 12 * $month;
// Create an array of time units and strings needed for specific unit
$time_intervals = [
$second => 'second',
$minute => 'minute',
$hour => 'hour',
$day => 'day',
$week => 'week',
$month => 'month',
$year => 'year',
];
// Sort array in descending order by keys
krsort($time_intervals);
foreach ($time_intervals as $time => $string) {
if ($ago_from_now >= $time) {
$unit = floor($ago_from_now / $time);
$time_ago = sprintf('%d %s%s %s', $unit, $string, $unit > 1 ? 's' : '', 'ago');
break;
}
}
return $time_ago;
}
Usage of Time Ago Function
This function will now return the human-readable time ago string for given timestamp. The function accepts a timestamp as parameter, so DateTime format first needs to be converted to timestamp using strtotime() function of PHP. This is how this function can be used to display time ago format:
$time_ago = to_time_ago_format(strtotime('2020-04-03 02:35:12'));
echo $time_ago;PHP Time Ago Examples
The function we created to convert timestamp to time ago format will now work as shown in snippet below:
to_time_ago_format(strtotime('now')); // Just Now
to_time_ago_format(strtotime('-2 seconds')); // 2 seconds ago
to_time_ago_format(strtotime('-2 minutes')); // 2 minutes ago
to_time_ago_format(strtotime('-2 hours')); // 2 hours ago
to_time_ago_format(strtotime('-2 days')); // 2 days ago
to_time_ago_format(strtotime('-2 weeks')); // 2 weeks ago
to_time_ago_format(strtotime('-2 months')); // 2 months ago
to_time_ago_format(strtotime('-2 years')); // 2 years agoWe just created a PHP function to convert timestamps to time ago format string, making the time of content human-readable and localizing the time for user.