moment examples español dates javascript momentjs

javascript - examples - ¿Cómo uso format() en una duración de moment.js?



moment js timezone (15)

¿Hay alguna forma de que pueda usar el método de format moment.js en objetos de duración? No puedo encontrarlo en ninguna parte de los documentos y no se ve que sea un atributo en los objetos de duración.

Me gustaría poder hacer algo como:

var diff = moment(end).unix() - moment(start).unix(); moment.duration(diff).format(''hh:mm:ss'')

Además, si hay otras bibliotecas que puedan acomodar fácilmente este tipo de funcionalidad, me interesarían las recomendaciones.

¡Gracias!


¿Qué tal javascript nativo?

var formatTime = function(integer) { if(integer < 10) { return "0" + integer; } else { return integer; } } function getDuration(ms) { var s1 = Math.floor(ms/1000); var s2 = s1%60; var m1 = Math.floor(s1/60); var m2 = m1%60; var h1 = Math.floor(m1/60); var string = formatTime(h1) +":" + formatTime(m2) + ":" + formatTime(s2); return string; }


El mejor escenario para mi caso de uso particular fue:

var duration = moment.duration("09:30"), formatted = moment.utc(duration.asMilliseconds()).format("HH:mm");

Esto mejora con la respuesta de @ Wilson, ya que no tiene acceso a datos de propiedad interna privada.



No necesita .format. Usa duraciones como esta:

const duration = moment.duration(83, ''seconds''); console.log(duration.minutes() + '':'' +duration.seconds()); // output: 1:23

Encontré esta solución aquí: https://github.com/moment/moment/issues/463


Para formatear la duración del momento en una cadena

var duration = moment.duration(86400000); //value in milliseconds var hours = duration.hours(); var minutes = duration.minutes(); var seconds = duration.seconds(); var milliseconds = duration.milliseconds(); var date = moment().hours(hours).minutes(minutes).seconds(seconds).millisecond(milliseconds); if (is12hr){ return date.format("hh:mm:ss a"); }else{ return date.format("HH:mm:ss"); }


Si está dispuesto a utilizar una biblioteca de JavaScript diferente, numeral.js puede formatear los segundos de la siguiente manera (por ejemplo, 1000 segundos):

var string = numeral(1000).format(''00:00''); // ''00:16:40''


Si se deben mostrar todas las horas (más de 24) y si ''0'' antes de las horas no es necesario, entonces el formateo se puede hacer con una línea corta de código:

Math.floor(duration.as(''h'')) + moment.utc(duration.as(''ms'')).format('':mm:ss'')



Utilizo la función de formato clásico en estos casos:

var diff = moment(end).unix() - moment(start).unix(); //use unix function instead of difference moment.unix(diff).format(''hh:mm:ss'')

Esto es un truco porque la diferencia de tiempo se trata como una fecha de momento estándar, una fecha de época temprana, pero no importa nuestro objetivo y no necesita ningún complemento


Yo suelo:

var duration = moment.duration("09:30"); var str = moment(duration._data).format("HH:mm");

Y obtengo "09:30" en var str.


convertir la duración a ms y luego al momento:

moment.utc(duration.as(''milliseconds'')).format(''HH:mm:ss'')


si diff es un momento

var diff = moment(20111031) - moment(20111010); var formated1 = moment(diff).format("hh:mm:ss"); console.log("format 1: "+formated1);


si usa angular, agregue esto a sus filtros:

.filter(''durationFormat'', function () { return function (value) { var days = Math.floor(value/86400000); value = value%86400000; var hours = Math.floor(value/3600000); value = value%3600000; var minutes = Math.floor(value/60000); value = value%60000; var seconds = Math.floor(value/1000); return (days? days + '' days '': '''') + (hours? hours + '' hours '': '''') + (minutes? minutes + '' minutes '': '''') + (seconds? seconds + '' seconds '': '''') } })

ejemplo de uso

<div> {{diff | durationFormat}} </div>


// set up let start = moment("2018-05-16 12:00:00"); // some random moment in time (in ms) let end = moment("2018-05-16 12:22:00"); // some random moment after start (in ms) let diff = end.diff(start); // execution let f = moment.utc(diff).format("HH:mm:ss.SSS"); alert(f);

Eche un vistazo al JSFiddle


var diff = moment(end).unix() - moment(start).unix(); moment.utc(moment.duration(diff).asMilliseconds()).format("HH:mm:ss.SSS");