Как преобразовать временную метку unix в метку времени ISO8601 в PHP?

Я пытаюсь извлечь временную метку unix из mysql и преобразовать ее в метку времени ISO8601. Мне нужно это, чтобы форматировать дату в facebook-like (или stack-overflow-like 🙂 '30 минут назад 'вместо того, чтобы показывать точную дату и время. Кто-нибудь справился с этим?

$timestamp = '1268932078'; $iso8601 = date('c', $timestamp); 

Но есть встроенные функции, которые помогут вам в этом, если вы не хотите откатывать свои собственные, например: DateTime :: diff .

Facebook Like Time Format:

Функция разницы во времени, которая выводит время, прошедшее в стиле facebook : 1 день назад или 4 месяца назад.

http://www.php.net/manual/en/function.time.php#89415

 function nicetime($date) { if(empty($date)) { return "No date provided"; } $periods = array("second","minute","hour","day","week","month","year","decade"); $lengths = array("60","60","24","7","4.35","12","10"); $now = time(); $unix_date = strtotime($date); if(empty($unix_date)) { return "Bad date"; } if($now > $unix_date) { $difference = $now - $unix_date; $tense = "ago"; } else { $difference = $unix_date - $now; $tense = "from now"; } for($j = 0; $difference >= $lengths[$j] && $j < count($lengths)-1; $j++) { $difference /= $lengths[$j]; } $difference = round($difference); if($difference != 1) { $periods[$j].= "s"; } return "$difference $periods[$j] {$tense}"; } // convert timestamp to date ISO8601 $timestamp = date('c', '1268932078'); // convert to nice date echo nicetime($timestamp); //40 years ago