Come posso formattare le date come Twitter in JavaScript?

Come posso formattare le date come Twitter in JavaScript?

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'

Torna su