Я использую этот помощник для Codeigniter (вы можете увидеть оригинал здесь: codeigniter forums)
Я использую этот код:
<?php if (! defined('BASEPATH')) exit('No direct script access allowed');
if(! function_exists('relative_time'))
{
function relative_time($datetime)
{
if(!$datetime)
{
return "no data";
}
if(!is_numeric($datetime))
{
$val = explode(" ",$datetime);
$date = explode("-",$val[0]);
$time = explode(":",$val[1]);
$datetime = mktime($time[0],$time[1],$time[2],$date[1],$date[2],$date[0]);
}
$difference = time() - $datetime;
$periods = array("second", "minute", "hour", "day", "week", "month", "year", "decade");
$lengths = array("60","60","24","7","4.35","12","10");
if ($difference > 0)
{
$ending = 'ago';
}
else
{
$difference = -$difference;
$ending = 'to go';
}
for($j = 0; $difference >= $lengths[$j]; $j++)
{
$difference /= $lengths[$j];
}
$difference = round($difference);
if($difference != 1)
{
$period = strtolower($periods[$j].'s');
} else {
$period = strtolower($periods[$j]);
}
return "$difference $period $ending";
}
}
Я не уверен, что вы всегда хотите сказать «дни», этот код делает все, что меньше (например, «49 секунд назад» или «17 минут назад», или «6 часов назад», или '10 дней назад ', или недель или месяцев (или даже лет). Если то, что вы ищете, это только дни, было бы достаточно просто изменить этот скрипт.
безупречный. Благодарю. – pixeltocode