/**
* @ formato de archivo-tiempo.js
* @módulo formato-tiempo
* /
/ **
* Formatee los segundos como una cadena de tiempo, H:MM:SS o M:SS. Proporcionar una guía (en
* segundos) forzará un número de ceros a la izquierda para cubrir la longitud del
* guía.
*
* @privado
* @param {número} segundos
* Número de segundos para convertirse en una cadena
*
* guía @param {número}
* Número (en segundos) para modelar la cadena después
*
* @return {cadena}
* Hora formateada como H:MM:SS o M:SS
* /
const defaultImplementation = function(segundos, guía) {
segundos = segundos < 0? 0 : segundos;
let s = Matemáticas.piso(segundos % 60);
let m = Math.floor(segundos / 60 % 60);
let h = Math.floor (segundos / 3600);
const gm = Matemáticas.piso(guía / 60 % 60);
const gh = Matemáticas.piso(guía/3600);
// manejar tiempos inválidos
if (isNaN(segundos) || segundos === Infinito) {
// '-' es falso para todos los operadores relacionales (p. ej. < , > =) por lo que esta configuración
// agregará el número mínimo de campos especificado por la guía
h = m = s = '-';
}
// Comprobar si necesitamos mostrar horas
h = (h > 0 || gh > 0) ? h + ':' : '';
// Si se muestran las horas, es posible que debamos agregar un cero inicial.
// Mostrar siempre al menos un dígito de minutos.
m = (((h || gramo > = 10) && metro < 10) ? '0' + m : m) + ':';
// Comprueba si el cero inicial es necesario para los segundos
s = (s < 10) ? '0' + s : s;
devuelve h + m + s;
};
// Puntero interno a la implementación actual.
let implementacion = implementacion por defecto;
/ **
* Reemplaza la implementación predeterminada de formatTime con una implementación personalizada.
*
* @param {Función} implementación personalizada
* Una función que se usará en lugar del formatTime predeterminado
* implementación. Recibirá la hora actual en segundos y el
* guía (en segundos) como argumentos.
* /
exportar función setFormatTime(customImplementation) {
implementación = implementación personalizada;
}
/ **
* Restablece formatTime a la implementación predeterminada.
* /
función de exportación resetFormatTime() {
implementación = implementación predeterminada;
}
/ **
* Delegados a la función de formato de hora predeterminada o a una personalizada
* función suministrada a través de `setFormatTime`.
*
* Da formato a los segundos como una cadena de tiempo (H:MM:SS o M:SS). suministro de un
* guía (en segundos) forzará un número de ceros a la izquierda para cubrir el
* longitud de la guía.
*
* @estático
* @example formatTime(125, 600) === "02:05"
* @param {número} segundos
* Número de segundos para convertirse en una cadena
*
* guía @param {número}
* Número (en segundos) para modelar la cadena después
*
* @return {cadena}
* Hora formateada como H:MM:SS o M:SS
* /
función formatTime(segundos, guía = segundos) {
implementación de retorno (segundos, guía);
}
exportar formatTime por defecto;