2012-08-26 12 views
7

Ich benutze Moment.js und möchte Unix-Zeitstempel in (immer) Minuten vor der aktuellen Uhrzeit anzeigen. ZB) vor 4 Minuten, vor 30 Minuten, vor 94 Minuten, ect.Moment.js Unix Zeitstempel zur Anzeige der Zeit immer in Minuten

Im Moment bin ich mit:

moment.unix(d).fromNow() 

Aber das zeigt nicht immer in Minuten beispielsweise eine Stunde) vor, einen Tag vor, ect. Ich habe versucht mit .asMinutes(), aber ich glaube, dass nur Wörter mit moment.duration().

Antwort

4

Nicht sicher, ob dies möglich ist mit nativer Moment Methoden, aber Sie können leicht eigene Moment Erweiterung machen:

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

Fiddle

Beachten Sie, dass andere Moment Methoden nicht verkettbar sein nach minutesFromNow() als Meine Erweiterung gibt eine Zeichenfolge zurück.

edit:

Erweiterung mit festen Plural (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'; 
} 

Sie können auch ersetzen "min" mit " Minute ", wenn Sie die lange Form bevorzugen.

Fiddle

+0

Perfekt, es ist genau das, was ich wollte und es funktioniert super! Vielen Dank! –

+0

schön .. aber ... Wie bringe ich in Zukunft Timestamp? Das gibt mir das negative Protokoll zurück –

2

ändern Sie einfach die Funktion im moment.js Code "finden", so dass es Minuten zurück:

from : function (time, withoutSuffix) { 

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

} 

Hier ein example ist.

... oder noch besser. Fügen Sie das einfach als neue Funktion namens "fromNowInMinutes" hinzu.