2012-08-26 7 views
7

Sto usando Moment.js e vorrei convertire i timestamp di unix in (sempre) visualizzare minuti fa dall'ora corrente. Ad esempio 4 minuti fa, 30 minuti fa, 94 minuti fa, ecc.Moment.js unix timestamp per visualizzare il tempo fa sempre in minuti

In questo momento sto usando:

moment.unix(d).fromNow() 

Ma questo non sempre indica in minuti per esempio) un'ora fa, un giorno fa, ect. Ho provato a utilizzare. AsMinutes() ma credo che siano solo parole con moment.duration().

risposta

4

Non sono sicuro se questo è possibile con i metodi Moment nativi, ma si può facilmente fare il vostro proprio interno Moment:

moment.fn.minutesFromNow = function() { 
    return Math.floor((+new Date() - (+this))/60000) + ' mins ago'; 
} 
//then call: 
moment.unix(d).minutesFromNow(); 

Fiddle

Nota che altri metodi momento non saranno chainable dopo minutesFromNow() come la mia estensione restituisce una stringa.

edit:

Prolunga con plurale fissa (0 min s, 1 min, 2 min s):

moment.fn.minutesFromNow = function() { 
    var r = Math.floor((+new Date() - (+this))/60000); 
    return r + ' min' + ((r===1) ? '' : 's') + ' ago'; 
} 

Si può anche sostituire "min" con " minuto "se preferisci la forma lunga.

Fiddle

+0

Perfetto, è proprio quello che volevo e funziona benissimo! Grazie! –

+0

simpatico .. ma ... come posso inserire timestamp futuro? Questo mi restituisce i minuti negativi –

2

Basta modificare la funzione "trova" nel codice moment.js, in modo che restituisca minuti:

from : function (time, withoutSuffix) { 

    return moment.duration(this.diff(time)).asMinutes(); 

} 

Ecco un example.

... o, ancora meglio. Basta aggiungere questo come una nuova funzione chiamata "fromNowInMinutes".