2008-11-03 9 views
2

Date de publication de l'API de recherche Twitter Atom Feed comme 2008-11-03T21: 30: 06Z qui doit être convertie en "X secondes/minutes/heures/jours" pour avoir montré depuis combien de temps twitter les messages ont été postés.PHP Convert HTML Date formatée

Pensez que cela peut être fait avec la fonction php date() en utilisant la valeur DATE_ATOM?

Répondre

3
function time_since($your_timestamp) { 
    $unix_timestamp = strtotime($your_timestamp); 
    $seconds = time() - $unix_timestamp; 
    $minutes = 0; 
    $hours = 0; 
    $days = 0; 
    $weeks = 0; 
    $months = 0; 
    $years = 0; 
    if ($seconds == 0) $seconds = 1; 
    if ($seconds> 60) { 
     $minutes = $seconds/60; 
    } else { 
     return add_s($seconds,'second'); 
    } 

    if ($minutes >= 60) { 
     $hours = $minutes/60; 
    } else { 
     return add_s($minutes,'minute'); 
    } 

    if ($hours >= 24) { 
     $days = $hours/24; 
    } else { 
     return add_s($hours,'hour'); 
    } 

    if ($days >= 7) { 
     $weeks = $days/7; 
    } else { 
     return add_s($days,'day'); 
    } 

    if ($weeks >= 4) { 
     $months = $weeks/4; 
    } else { 
     return add_s($weeks,'week'); 
    } 

    if ($months>= 12) { 
     $years = $months/12; 
     return add_s($years,'year'); 
    } else { 
     return add_s($months,'month'); 
    } 

} 

function add_s($num,$word) { 
    $num = floor($num); 
    if ($num == 1) { 
     return $num.' '.$word.' ago'; 
    } else { 
     return $num.' '.$word.'s ago'; 
    } 
} 

echo time_since('2008-11-03T21:30:06Z'); 
+0

Merci Jack. Tout ce dont j'avais besoin combiné dans un couple de fonctions. À votre santé! –

0

Ceci est facile en utilisant la fonctionnalité DateTime introduit en PHP 5.2:

$posted = new DateTime('2008-11-03T21:30:06Z'); 
$now  = new DateTime(); 
$interval = $posted->diff($now); 
echo $interval->format('%a days'); // You can change this to be whatever format you like 

Example