Operaciones con duraciones en Moment.js
Moment.js también tiene objetos de duración. Una duración se define como un período de tiempo sin contexto.
Moment.js también tiene objetos de duración. Mientras que un moment se define como un único punto en el tiempo, una duración se define como un período de tiempo.
Las duraciones no tienen fecha de inicio y fin definida. No tienen contexto.
Una duración es conceptualmente más similar a "2 horas" que a "entre las 2 y las 4 de la tarde de hoy". Como tales, no son una buena solución para convertir entre unidades que dependen del contexto.
Por ejemplo, un año se puede definir como 366 días, 365 días, 365,25 días, 12 meses o 52 semanas. Intentar convertir años en días no tiene sentido sin contexto. Es mucho mejor usar moment#diff para calcular días o años entre dos momentos que usar Duration.
Como se analiza aquí, el formato de duración de Moment.js difiere muy ligeramente de las especificaciones de duración nominal ISO 8601 y duración RFC 5545.
Creación de duraciones
JavaScript
Para crear una duración, llama a moment.duration() con la duración en milisegundos.
JavaScript
Si deseas crear un moment con una unidad de medida distinta de milisegundos, también puedes pasar la unidad de medida.
JavaScript
La misma abreviatura para moment#add y moment#subtract también funciona aquí.
| Clave | Abreviatura |
|---|---|
| years | y |
| months | M |
| weeks | w |
| days | d |
| hours | h |
| minutes | m |
| seconds | s |
| milliseconds | ms |
Al igual que moment#add, puedes pasar un objeto de valores si necesitas varias unidades de medida diferentes.
JavaScript
A partir de 2.1.0, moment admite el análisis de períodos de tiempo de estilo ASP.NET. Se admiten los siguientes formatos.
El formato es una cadena de hora, minuto y segundo separada por dos puntos, como 23:59:59. El número de días puede ir precedido de un separador de puntos como 7.23:59:59. También se admiten segundos parciales 23:59:59.999.
JavaScript
A partir de 2.3.0, moment también admite el análisis (parsing) de duraciones ISO 8601.
JavaScript
A partir de 2.11.0, se admiten cadenas de formato de duración con un espacio entre días y lo demás.
JavaScript
A partir de 2.13.0, se admiten signos mixtos negativos y positivos al analizar duraciones.
JavaScript
A partir de 2.18.0, se admiten duraciones no válidas, al igual que moments no válidos. Para crear una duración no válida, puede pasar NaN como valor de una unidad.
En las próximas versiones, se espera que las duraciones no válidas cubran más casos (como valores null para unidades).
JavaScript
Clonar duraciones
JavaScript
Crea un clon de una duración. Las duraciones son mutables, al igual que los objetos moment, por lo que esto te permite obtener una instantánea en un punto en el tiempo.
JavaScript
Humanizar duraciones
JavaScript
Algunas veces querrás todas las bondades de moment#from, pero sin tener que crear dos moments, solo querrás mostrar un período de tiempo.
Ingresa moment.duration().humanize().
JavaScript
De forma predeterminada, la cadena de retorno describe una duración a month (sin sufijo).
Si deseas una duración orientada in a month, a month ago (con sufijo), pasa true como se ve a continuación.
JavaScript
Para los sufijos anteriores a ahora, pasa un número negativo.
JavaScript
Las duraciones no válidas se humanizan en la versión localizada de Invalid Date.
JavaScript
La salida humanizada se puede configurar con umbrales de tiempo relativos. Para especificar umbrales para una invocación particular de humanizar, pásalos como argumento único o después del sufijo arg:
JavaScript
Nota: Pasar los umbrales en humanizar se agregó en 2.25.0.
Milisegundos en una duración
JavaScript
Para obtener la cantidad de milisegundos en una duración, usa moment.duration().milliseconds().
Devolverá un número entre 0 y 999.
JavaScript
Si deseas que la duración esté en milisegundos, utiliza moment.duration().asMilliseconds() en su lugar.
JavaScript
Segundos en una duración
JavaScript
Para obtener la cantidad de segundos en una duración, usa moment.duration().seconds().
Devolverá un número entre 0 y 59.
JavaScript
Si deseas la duración en segundos, utiliza moment.duration().asSeconds() en su lugar.
JavaScript
Minutos en una duración
JavaScript
Al igual que con los otros getters de duraciones, moment.duration().minutes() obtiene los minutos (0 - 59).
moment.duration().asMinutes() obtiene la duración en minutos.
Horas en una duración
JavaScript
Al igual que con los otros getters de duraciones, moment.duration().hours() obtiene las horas (0 - 23).
moment.duration().asHours() obtiene la duración en horas.
Días en una duración
JavaScript
Al igual que con los otros getters de duraciones, moment.duration().days() obtiene los días (0 - 30).
moment.duration().asDays() obtiene la duración en días.
Semanas en una duración
JavaScript
Al igual que con los otros getters de duraciones, moment.duration().weeks() obtiene las semanas (0 - 4).
moment.duration().asWeeks() obtiene la duración en semanas.
Presta atención a que, a diferencia de otros getters de duración, las semanas se cuentan como un subconjunto de los días y no se eliminan del recuento de días.
Nota: La longitud de una duración en semanas se define como 7 días.
Meses en una duración
JavaScript
Al igual que con los otros getters de duraciones, moment.duration().months() obtiene los meses (0 - 11).
moment.duration().asMonths() obtiene la duración en meses.
Años en una duración
JavaScript
Al igual que con los otros getters de duraciones, moment.duration().years() obtiene los años.
moment.duration().asYears() obtiene la duración en años.
© 2026 Esdocu. Contenido bajo licencia MIT.
Editar esta página