Twitter non restituisce le date già formattate come sul sito principale. Per ottenere questo risultato occorre effettuare il parsing delle date.
Possiamo implementare la seguente funzione di utility:
var relativeTime = function( value ) {
var values = value.split( " " );
var timeValue = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
var parsedDate = Date.parse( timeValue );
var relativeTo = ( arguments.length > 1 ) ? arguments[1] : new Date();
var delta = parseInt( ( ( relativeTo.getTime() - parsedDate ) / 1000 ), 10 );
delta = delta + ( relativeTo.getTimezoneOffset() * 60 );
if ( delta < 60 ) {
return "meno di 1 minuto fa";
} else if ( delta < 120 ) {
return "circa 1 minuto fa";
} else if ( delta < ( 60 * 60 ) ) {
return ( parseInt( delta / 60 ), 10 ).toString() + " minuti fa";
} else if ( delta < ( 120 * 60 ) ) {
return "circa 1 ora fa";
} else if ( delta < ( 24 * 60 * 60 ) ) {
return "circa " + ( parseInt( delta / 3600 ), 10 ).toString() + " ore fa";
} else if ( delta < ( 48 * 60 * 60 ) ) {
return "1 giorno fa";
} else {
return ( parseInt( delta / 86400 ), 10 ).toString() + " giorni fa";
}
};
Esempio d'uso:
var date = "Sat Jan 31 08:30:00 +0000 2015";
console.log( relativeTime( date ) ); // '1 giorno fa'