2012-08-26 16 views
7

Estoy usando Moment.js y me gustaría convertir las marcas de tiempo de unix a (siempre) mostrar hace minutos desde la hora actual. E.g.) Hace 4 minutos, hace 30 minutos, hace 94 minutos, etc.Moment.js unix timestamp para mostrar el tiempo atrás siempre en minutos

En este momento estoy usando:

moment.unix(d).fromNow() 

Pero esto no siempre muestra en cuestión de minutos, por ejemplo) hace una hora, un día atrás, ect. He intentado usar .asMinutes() pero creo que esto solo son palabras con moment.duration().

Respuesta

4

No estoy seguro si esto es posible con métodos Moment nativos, pero se puede hacer fácilmente su propia extensión Momento:

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

Fiddle

Tenga en cuenta que otros métodos de momento no serán chainable después minutesFromNow() como mi extensión devuelve una cadena.

edit:

extensión con plural fijo (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'; 
} 

Puede así reemplazar "min" con " minuto "si prefieres la forma larga.

Fiddle

+0

Perfecto, es justo lo que quería y funciona muy bien! ¡Gracias! –

+0

nice .. pero ... ¿Cómo puedo traer la marca de tiempo futura? Esto me devuelve los minutos negativos –

2

basta con modificar la función "buscar" en el código moment.js, de modo que vuelve minutos:

from : function (time, withoutSuffix) { 

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

} 

He aquí un example.

... o, mejor aún. Simplemente agregue esto como una nueva función llamada "fromNowInMinutes".

Cuestiones relacionadas