Come formattare una data in modo che appaia nel formato: “2 minuti fa”
function nice_date($datetime, $full = false)
{
date_default_timezone_set("Europe/Rome");
$time_ago = strtotime($datetime);
$time_now = time();
$now = new \DateTime('@' . $time_now);
$ago = new \DateTime('@' . $time_ago);
$diff = $now->diff($ago);
$diff->w = floor($diff->d / 7);
$diff->d -= $diff->w * 7;
$string = array(
'y' => array('singolare' => 'anno', 'plurale' => 'anni'),
'm' => array('singolare' => 'mese', 'plurale' => 'mesi'),
'w' => array('singolare' => 'settimana', 'plurale' => 'settimane'),
'd' => array('singolare' => 'giorno', 'plurale' => 'giorni'),
'h' => array('singolare' => 'ora', 'plurale' => 'ore'),
'i' => array('singolare' => 'minuto', 'plurale' => 'minuti'),
's' => array('singolare' => 'secondo', 'plurale' => 'secondi'),
);
foreach ($string as $k => &$v) {
if ($diff->$k) {
if ($diff->$k > 1) {
//plurale
$v = $diff->$k . ' ' . $v['plurale'];
} else {
//singolare
$v = $diff->$k . ' ' . $v['singolare'];
}
} else {
unset($string[$k]);
}
}
//print_r($string);
if (!$full) {
$string = array_slice($string, 0, 1);
}
if ($time_now > $time_ago) {
$ret = $string ? implode(', ', $string) . ' fa' : 'proprio adesso';
} else {
$ret = $string ? 'tra ' . implode(', ', $string) . '' : 'proprio adesso';
}
return $ret;
}
$my_date = nice_date('2020-01-05 20:30');
echo $my_date // 5 mesi fa