Skip to content

Instantly share code, notes, and snippets.

@parzibyte
Created March 26, 2019 23:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save parzibyte/a0405f1d9ff6478a32025ebd4d225015 to your computer and use it in GitHub Desktop.
Save parzibyte/a0405f1d9ff6478a32025ebd4d225015 to your computer and use it in GitHub Desktop.
/**
* Hacer una función en JavaScript que reciba un número de minutos
* (puede ser positivo o negativo) y devuelva el día de la semana y la hora
* (en formato de 24 horas) que sería si al domingo a la medianoche se le sumara
* o restara ese número de minutos.
*
* @author parzibyte
*/
const diaYHora = numeroDeMinutos => {
// Fecha de un domingo a medianoche. Yo sé que el 24 de marzo del 2019 fue domingo
// Nota: los meses se cuentan desde 0
let fecha = new Date(2019, 2, 24, 0, 0, 0, 0);
// Milisegundos equivalentes, que puede ser negativo o positivo dependiendo de numeroDeMinutos
let milisegundosEquivalentes = numeroDeMinutos * 60000;
// Sumarle (o restarle) los milisegundos. No olvides la ley de signos, ya que:
// fecha + (-numero) es equivalente a fecha - numero. El amigo de mi enemigo es mi enemigo
fecha.setTime(fecha.getTime() + milisegundosEquivalentes);
// Formatearíamos pero hay errores con el español así que lo hacemos manual :/
let dia = ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"][fecha.getDay()];
// sacar y agregar 0 si es necesario
let hora = fecha.getHours().toString();
if (hora.length <= 1) hora = "0" + hora;
let minutos = fecha.getMinutes().toString();
if (minutos.length <= 1) minutos = "0" + minutos;
// Concatenamos con plantillas de cadena
//https://parzibyte.me/blog/2018/03/26/backticks-javascript-plantillas-cadenas/
return `${dia} ${hora}:${minutos}`;
};
// Hora de probar
const minutosParaProbar = [
3,
-3,
0,
-59,
-60,
50,
61,
-60,
-75
];
minutosParaProbar.forEach(numeroDeMinutos => {
console.log(`Probando con ${numeroDeMinutos}. Resultado: ${diaYHora(numeroDeMinutos)}`);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment