Time Ago format is used to display time in human-readable format, such as 5 seconds ago, 2 minutes ago, 1 day ago, etc. Relative time format helps to avoid different time zone conversions. In this example code snippet, we will show you how to create Time Ago function to convert timestamp to time ago using PHP.
We will create a custom function to convert timestamp to time ago in PHP. This function will help you to convert DateTime into relative time format easily.
The timeAgo() function is used to get the DateTime in time ago format. This function takes two parameters as input, $time (required) and $short (optional).
$time
– Timestamp. The program will subtract it from the current time, and convert it into the time ago format.$short
– true/false. Specify whether you want to display short text format (1m ago, 1h ago, etc).function timeAgo($time, $short = false){
$SECOND = 1;
$MINUTE = 60 * $SECOND;
$HOUR = 60 * $MINUTE;
$DAY = 24 * $HOUR;
$MONTH = 30 * $DAY;
$before = time() - $time;
if($before < 0){
return "not yet";
}
if($short){
if($before < 1 * $MINUTE){
return ($before <5) ? "just now" : $before . " ago";
}
if($before < 2 * $MINUTE){
return "1m ago";
}
if($before < 45 * $MINUTE){
return floor($before / 60) . "m ago";
}
if($before < 90 * $MINUTE){
return "1h ago";
}
if($before < 24 * $HOUR){
return floor($before / 60 / 60). "h ago";
}
if($before < 48 * $HOUR){
return "1d ago";
}
if($before < 30 * $DAY){
return floor($before / 60 / 60 / 24) . "d ago";
}
if($before < 12 * $MONTH){
$months = floor($before / 60 / 60 / 24 / 30);
return $months <= 1 ? "1mo ago" : $months . "mo ago";
}else{
$years = floor ($before / 60 / 60 / 24 / 30 / 12);
return $years <= 1 ? "1y ago" : $years."y ago";
}
}
if($before < 1 * $MINUTE){
return ($before <= 1) ? "just now" : $before . " seconds ago";
}
if($before < 2 * $MINUTE){
return "a minute ago";
}
if($before < 45 * $MINUTE){
return floor($before / 60) . " minutes ago";
}
if($before < 90 * $MINUTE){
return "an hour ago";
}
if($before < 24 * $HOUR){
return (floor($before / 60 / 60) == 1 ? 'about an hour' : floor($before / 60 / 60).' hours'). " ago";
}
if($before < 48 * $HOUR){
return "yesterday";
}
if($before < 30 * $DAY){
return floor($before / 60 / 60 / 24) . " days ago";
}
if($before < 12 * $MONTH){
$months = floor($before / 60 / 60 / 24 / 30);
return $months <= 1 ? "one month ago" : $months . " months ago";
}else{
$years = floor ($before / 60 / 60 / 24 / 30 / 12);
return $years <= 1 ? "one year ago" : $years." years ago";
}
return "$time";
}
timeAgo() function usage:
You need to pass the timestamp in timeAgo() function. If you have DateTime format, convert it to the timestamp using strtotime() function in PHP and pass it to the timeAgo() function.
$date_time = '2024-06-17 14:30:45';
$timestamp = strtotime($date_time);
echo timeAgo($timestamp);