¿Hay alguna forma de usar el método moment.js format
en objetos de duración? No puedo encontrarlo en ningún lugar de los documentos y no parece ser 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 pueden acomodar fácilmente este tipo de funcionalidad, me interesarían las recomendaciones.
¡Gracias!
javascript
momentjs
mvanveen
fuente
fuente
HH:mm:ss
daré00:00:23
en mi ejemplo anterior. así que la carcasa equivocada por parte de las horasRespuestas:
Estamos buscando agregar algún tipo de formato a las duraciones en moment.js. Ver https://github.com/timrwood/moment/issues/463
Un par de otras bibliotecas que podrían ayudar son http://countdownjs.org/ y https://github.com/icambron/twix.js
fuente
Echa un vistazo a JSFiddle
fuente
DDD HH:mm:ss.SSS
(dondeDDD
es el día del año) aparece1
cuando quiero0
. ¿Alguna solución rápida para eso?convertir duración a ms y luego a momento:
fuente
.format('HH:mm:ss')
. Ver los documentosUtilice este complemento Formato de duración de momento .
Ejemplo:
fuente
hh:mm:mm
y solo tengo 10 segundos, se muestra en10
lugar de00:00:10
(incluso con fuerza de longitud activada) Si no está formateando ... entonces debería llamarse de otra manera, los formatos deberían ser estandarizado.{ trim: false }
, detendrá ese comportamiento.const duration = moment.duration(value, 'seconds');
que puedo formatear usando:moment.utc(duration.as('milliseconds')).format('HH:mm:ss').toString();
Use esta línea de código:
fuente
fuente
El mejor escenario para mi caso de uso particular fue:
Esto mejora la respuesta de @ Wilson ya que no accede a la propiedad interna privada _data.
fuente
No necesita formato. Use duraciones como esta:
Encontré esta solución aquí: https://github.com/moment/moment/issues/463
EDITAR:
Y con relleno para segundos, minutos y horas:
fuente
duration = moment.duration(7200, 'seconds'); withPadding(duration);
dirán "00:00".if (duration.asDays() > 0) { return 'at least one day';
- ¿Estoy leyendo eso correctamente?Yo suelo:
Y me sale "09:30" en var str.
fuente
_data
es una propiedad interna y puede cambiar sin previo aviso.moment(moment.duration(1200000)._data).format('hh:mm:ss')
devolverá 12:20 en lugar de 00:20h
está en el rango 1-12, por lo que es bastante previsible. Utilice en suH
lugar documentos - fichas de horamoment.utc(...).format("HH:mm");
si diff es un momento
fuente
Si está dispuesto a usar una biblioteca javascript diferente, numeral.js puede formatear segundos de la siguiente manera (el ejemplo es por 1000 segundos):
fuente
Utilizo la función de formato clásico en estos casos:
Este es un truco porque la diferencia de tiempo se trata como una fecha de momento estándar, una fecha de fecha temprana, pero no importa para nuestro objetivo y no necesita ningún complemento
fuente
Si se deben mostrar todas las horas (más de 24) y si '0' antes de las horas no es necesario, entonces se puede formatear con una línea corta de código:
fuente
Basado en la respuesta de ni-ko-o-kin :
fuente
Para formatear la duración del momento en una cadena
fuente
si usa angular, agregue esto a sus filtros:
ejemplo de uso
fuente
Mi solución que no involucra ninguna otra biblioteca y funciona con diff> 24h
fuente
¿Qué tal javascript nativo?
fuente
Use el formato momento-duración .
Marco del cliente (ej .: Reaccionar)
Servidor (node.js)
fuente
Huellas dactilares:
fuente
fuente
Puede usar numeral.js para formatear su duración:
fuente
Esto se puede usar para obtener los dos primeros caracteres como horas y los dos últimos como minutos. Se puede aplicar la misma lógica a los segundos.
fuente
moment.duration(x).format()
ha quedado en desuso Puede usarmoment.utc(4366589).format("HH:mm:ss")
para obtener la respuesta deseada.fuente
¿Cómo usar correctamente las duraciones de moment.js? El | Use moment.duration () en el código
Primero necesitas importar
moment
ymoment-duration-format
.Luego, use la función de duración. Apliquemos el ejemplo anterior: 28800 = 8 am.
🎉Bueno, no tienes el error de tipo anterior. 🤔 ¿Obtiene un valor correcto a las 8:00 am? No ..., el valor que obtienes es 8:00 a. El formato Moment.js no funciona como debería.
SolutionLa solución es transformar segundos a milisegundos y usar el tiempo UTC.
Muy bien, tenemos las 8:00 am ahora. Si desea las 8 am en lugar de las 8:00 am para el tiempo integral, necesitamos hacer RegExp
fuente
Necesitaba hacer esto para trabajar como requisito para mostrar las horas en este formato. Al principio probé esto.
Sin embargo, nada más de 24 horas y las horas se restablecen a 0. Pero los minutos y segundos fueron precisos. Así que usé solo esa parte para los minutos y segundos.
Ahora todo lo que necesito es el total de horas.
Y para obtener ese formato que todos queremos, simplemente lo pegamos.
si
totalMilliseconds
es894600000
esto volverá249:30:00
.Espero que haya ayudado. Deja cualquier pregunta en los comentarios. ;)
fuente
Si usa Angular> 2, hice una pipa inspirada en la respuesta @ hai-alaluf.
fuente
Esto funciona para mi:
fuente