1
C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más / JavaScript calcular el tiempo transcurrido entre dos clicks del usuario CU01163E
« en: 13 de Enero 2017, 00:07 »
Respuesta del Ejercicio # 1 del Capítulo 63 del tutorial básico de programación web con JavaScript:
Código: [Seleccionar]
/* Capítulo 63: Ejercicio 1 */
function Cap63Ejercicio1CalcularLapsoDeTiempo() {
var nombre = prompt('Teclee su nombre');
if ((!nombre) || (nombre.trim().length === 0)) {
while (nombre.trim() === '') {
nombre = prompt('Teclee su nombre');
}
}
var tiempo1 = new Date().getTime();
var pais = prompt('Introduzca su país');
if ((!pais) || (pais.trim().length === 0)) {
while (pais.trim() === '') {
pais = prompt('Teclee su país');
}
}
var tiempo2 = new Date().getTime();
var cantidadMilisegundos = tiempo2 - tiempo1;
/*----------------------------------------------------------------------------------------------------------------------
--> Ahora doy el resultado de acuerdo a la cantidad de milisegundos calculados entre las dos entradas de datos <--
---------------------------------------------------------------------------------------------------------------------*/
if (cantidadMilisegundos < 1000) { //Menos de un segundo
alert('Han pasado ' + cantidadMilisegundos + ' milisegundos entre su primera y segunda respuesta');
} else if (cantidadMilisegundos === 1000) { // Un segundo
alert('Ha pasado 1 segundo entre su primera y segunda respuesta');
} else if ((1000 < cantidadMilisegundos) && (cantidadMilisegundos < 60000)) { // Más de 1 segundo y menos de 1 minuto
alert('Han pasado aproximadamente ' + (cantidadMilisegundos / 1000).toFixed(0) + ' segundos entre su primera y segunda respuesta');
} else if (cantidadMilisegundos === 60000) { // Un minuto exacto
alert('Ha pasado 1 minuto entre su primera y segunda respuesta');
} else if ((60000 < cantidadMilisegundos) && (cantidadMilisegundos < 3600000)) { // Más de 1 minuto y menos de 1 hora
/* Se valida para cuando son minutos exactos (sin segundos) o cuando son inexactos (con segundos restantes) */
if (cantidadMilisegundos % 60000 === 0) { // Minutos exactos (sin segundos restantes)
alert('Han pasado aproximadamente ' + (cantidadMilisegundos / 60000).toFixed(0) + ' minutos entre su primera y segunda respuesta');
} else { // Minutos inexactos (con segundos restantes)
alert('Han pasado aproximadamente ' + (cantidadMilisegundos / 60000).toFixed(0) + ' minutos y ' + Number((cantidadMilisegundos % 60000) / 1000).toFixed(0) + ' segundos entre su primera y segunda respuesta');
}
} else if (cantidadMilisegundos === 3600000) { // 1 hora exactactamente
alert('Ha pasado 1 hora exactamente entre su primera y segunda respuesta');
} else if ((360000 < cantidadMilisegundos) && (cantidadMilisegundos < 86400000)) { // Más de 1 hora y menos de 1 día
/* Se debe validar para cuando son horas en punto o exactas (sin minutos y/o segundos) o cuando son horas inexactas (con minutos y/o segundos restantes) */
if (cantidadMilisegundos % 86400000 === 0) { // Horas exactas (en punto)
alert('Han pasado ' + (cantidadMilisegundos / 86400000).toFixed(0) + ' horas entre su primera y segunda respuesta');
} else if (cantidadMilisegundos % 86400000 !== 0) { // Horas inexactas (lo más común al ejecutarlo durante largo tiempo)
/* Ahora debe validarse si son horas inexactas con minutos en punto o horas inexactas con minutos + segundos restantes */
if ((cantidadMilisegundos % 86400000) % 60000 === 0) { // Horas inexactas con minutos en punto
alert('Han pasado ' + (cantidadMilisegundos / 86400000).toFixed(0) + ' horas y ' + Number((cantidadMilisegundos % 86400000) / 60000).toFixed() + ' minutos entre su primera y segunda respuesta');
} else if ((cantidadMilisegundos % 86400000) % 60000 !== 0) { // Horas inexactas con minutos + segundos restantes (lo más común en periodos largos)
alert('Han pasado ' + (cantidadMilisegundos / 86400000).toFixed(0) + ' horas, ' + Number((cantidadMilisegundos % 86400000) / 60000).toFixed(0) + ' minutos y ' + Number(((cantidadMilisegundos % 86400000) % 60000) / 1000).toFixed(0) + ' segundos entre su primera y segunda respuesta');
}
}
} else if (cantidadMilisegundos === 86400000) { // 1 día exactamente
alert('Ha pasado 1 día exactamente entre su primera y segunda respuesta');
}
}
RSS