JavaScript - Multiplicar minutos y segundos por un numero para obtener un valor

 
Vista:
sin imagen de perfil
Val: 8
Ha disminuido su posición en 19 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Multiplicar minutos y segundos por un numero para obtener un valor

Publicado por Jose (4 intervenciones) el 09/08/2019 20:54:23
Estoy trabajando en un código para crear un cronometro el cual ya funciona con minutos y segundos, lo que necesito es añadirle una función para multiplicar los minutos y segundos por un numero entero y que se me visualice cuanto debo cobrar por el tiempo transcurrido
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Xavi
Val: 1.807
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Multiplicar minutos y segundos por un numero para obtener un valor

Publicado por Xavi (68 intervenciones) el 10/08/2019 08:01:40
Hola Jose, en vez de mantener el tiempo en dos variables, yo unicamente tendria una hora inicial, y luego a cada segundo mostraria la diferencia de la hora actual con la hora inicial.

De la manera que tu lo has hecho, tendras que obtener los segundos totales y multiplicarlo por la cantidad que desees.

Si por ejemplo, quieres multiplicar cada segundo por 5, seria algo así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<!DOCTYPE html>
<html>
<head>
	<script type="text/javascript">
	//setInterval
	var cronometro;
 
	function detenerse()
	{
		clearInterval(cronometro);
		let s = (parseInt(document.getElementById("segundos").innerHTML))+(parseInt(document.getElementById("minutos").innerHTML)*60);
        alert(s*5);
	}
 
	function carga()
	{
		let contador_s =0;
		let contador_m =0;
		let s = document.getElementById("segundos");
		let m = document.getElementById("minutos");
 
		cronometro = setInterval(
			function(){
				if(contador_s==60)
				{
					contador_s=0;
					contador_m++;
					m.innerHTML = contador_m;
 
					if(contador_m==60)
					{
						contador_m=0;
					}
				}
 
				s.innerHTML = contador_s;
				contador_s++;
 
			}
			,1000);
 
	}
 
	</script>
</head>
<body onload="carga()">
	<p>
		<span id="minutos">0</span>:<span id="segundos">0</span>
	</p>
	<input type="button" onclick="detenerse()" value="deternse"/>
</body>
</html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 8
Ha disminuido su posición en 19 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Multiplicar minutos y segundos por un numero para obtener un valor

Publicado por Jose (4 intervenciones) el 12/08/2019 16:30:23
Mil gracias me sirvió muchisimo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 59
Ha aumentado su posición en 2 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Multiplicar minutos y segundos por un numero para obtener un valor

Publicado por luis (22 intervenciones) el 27/08/2019 22:02:09
Hola.

Antes que nada tienes que saber cual es la unidad de tiempo de referencia: minutos o segundos. O cobras por una cosa o por otra. Si es por minuto, puedes expresar los segundos como decimal y así multiplicar todo, aunque luego a la vista expreses el tiempo en minutos y segundos diferenciados.

Si cobras por segundo, multiplicarás la cantidad de segundos sin tener en cuenta los minutos transcurridos.

Tu cuota por ejemplo es 2,50 euros por minuto:

cuota=2.5;

El cronómetro puedes realizarlo con un setTimeout(), definiendo un contador que se ejecuta cada segundo

setTimeout("contador++",1000)


La expresión del cronómetro puedes realizarla con las variables "minutos" y "segundos". Se entiende que 60 segundos completa un minuto.

minutos=(contador/60).toFixed(0)

El operador toFixed() determina el número de decimales, que en este caso será cero.

Cuando segundos es igual a 60 sumaría un minuto, y los segundos pasarían a ser cero.

if(contador==60){minutos++;contador=0}

Si cobras por minutos: cobrar=(minutos+contador/60)*cuota

Si cobras por segundos: cobrar=((minutos*60)+contador)*cuota

Te dejo el código suponiendo que cobres por minutos. Recuerda que es una modalidad simplificada


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<html>
 
<head>
<meta http-equiv="Content-Language" content="es">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Pagina nueva 1</title>
</head>
 
<script language=javascript>
 
cuota=2.5;
contador=0;
function cobrarportiempo(){
 
contador++;
if(contador==60){contador=0;minutos1.innerHTML++}
segundos1.innerHTML=contador;
 
tiempototal=(parseInt(minutos1.innerHTML)+contador/60);
 
pagar.innerHTML=(tiempototal*cuota).toFixed(2)+' euros';
 
//se limita el importe a pagar a dos decimales
 
setTimeout("cobrarportiempo()",1000)
}
</script>
<body onload="cobrarportiempo()">
 
<div style="position: absolute; width: 279px; height: 100px; z-index: 1; left: 241px; top: 73px" id="capa1">
	<table border="1" width="100%">
		<tr>
			<td align="center" colspan="2"><b><font face="Arial">Tiempo
			transcurrido</font></b></td>
		</tr>
		<tr>
			<td align="center"><b><font face="Arial">minutos</font></b></td>
			<td align="center"><b><font face="Arial">segundos</font></b></td>
		</tr>
		<tr>
			<td align="center"><b><font face="Arial" size="7" id=minutos1>0</font></b></td>
			<td align="center"><b><font face="Arial" size="7" id=segundos1>0</font></b></td>
		</tr>
	</table>
</div>
 
<div style="position: absolute; width: 322px; height: 100px; z-index: 2; left: 225px; top: 216px" id="capa2">
	<table border="1" width="100%">
		<tr>
			<td align="center"><b><font face="Arial" size="4">Importe a pagar
			actual (3 euros por minuto)</font></b></td>
		</tr>
		<tr>
			<td align="center"><b><font face="Arial" size="7" id=pagar>0</font></b></td>
		</tr>
	</table>
</div>
 
</body>
 
</html>

Dado que lo he realizado muy rápido el aspecto inicial sería tan aburrido como esta imagen:

resultado

Adjunto también el htm por si quieres bajarlo y ejecutarlo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 8
Ha disminuido su posición en 19 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Multiplicar minutos y segundos por un numero para obtener un valor

Publicado por Jose (4 intervenciones) el 27/08/2019 22:09:54
Muchas gracias, me ha servido mucho, mil gracias por tu tiempo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 8
Ha disminuido su posición en 19 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Multiplicar minutos y segundos por un numero para obtener un valor

Publicado por Jose (4 intervenciones) el 27/08/2019 22:59:46
Hola, me ha servido mucho, pero quería hacerte una pregunta, cómo hacer para que cuando minimice la pantalla no se me detenga el conteo. Mil gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 59
Ha aumentado su posición en 2 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Multiplicar minutos y segundos por un numero para obtener un valor

Publicado por luis (22 intervenciones) el 27/08/2019 23:06:46
Lamentablemente javascript opera con el navegador, y en consecuencia en el ordenador cliente, por lo que el contador se detiene o altera cuando minimizas. Para que eso no ocurriese el programa tendría que rodar en el servidor, o bien vincular el tiempo con el reloj de tu ordenador con las funciones "get"

getDate() Devuelve el dia del mes (entre el 1 y el 31)
getDay() Devuelve el dia de la semana (entre el 0 y el 6)
getMonth() Devuelve el mes (entre el 0 y el 11)
getFullYear() Devuelve el año (en formato de 4 digitos)
getHours() Devuelve la hora (entre el 0 y el 24)
getMinutes() Devuelve los minutos (desde 0 a 59)
getSeconds() Devuelve los segundos (desde 0 a 59)
getTime() Devuelve el número de milisegundos desde el 1ro de Enero de 1970
getTimezoneOffset() Devuelve la diferencia de horario en minutos entre la hora local y GMT (Meridiano de Greenwich)
getUTCHours() Devuelve la hora de acuerdo a UTC (Tiempo Universal Coordinado)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar