<?php
if (!function_exists('render_date_difference')) {
    function render_date_difference($start_time)
    {
        $minute = 60;
        $hour = $minute * 60;
        $day = $hour * 24;
        $week = $day * 7;
        $month = $week * 4;
        $year = $month * 12;
         
        $start_time_dt = new DateTime($start_time);
        $now = new DateTime();
        $trip_start_difference = intval(($now->getTimestamp() - $start_time_dt->getTimestamp()));

        $start_tag = '<span title="' . date('G:H, j M Y', strtotime($start_time)) . '">';
        $end_tag = '</span>';
        $unit = null;
        $div = 1;

        if ($trip_start_difference < $minute) {
            $unit = 'second';
        } elseif ($trip_start_difference < $hour) {
            $div = $minute;
            $unit = 'minute';
        } elseif ($trip_start_difference < $day) {
            $div = $hour;
            $unit = 'hour';
        } elseif ($trip_start_difference < $week) {
            $div = $day;
            $unit = 'day';
        } elseif ($trip_start_difference < $month) {
            $div = $week;
            $unit = 'week';
        } elseif ($trip_start_difference < $year) {
            $div = $month;
            $unit = 'month';
        } else {
            $div = $year;
            $unit = 'year';
        }

        return $start_tag .
            ( floor($trip_start_difference / $div) ) .
            " {$unit}" .
            (
                ( floor($trip_start_difference / $div) > 1 ) ?
                's' :
                ''
            ) .
            " ago{$end_tag}";
    }
}