Foros del Web » Programando para Internet » Javascript »

Descomponer hora y hacer cálculos!

Estas en el tema de Descomponer hora y hacer cálculos! en el foro de Javascript en Foros del Web. Tengo un campo de texto que contiene la hora en formato hh:mm:ss. La idea que quiero lograr es que en base al valor que contenga ...
  #1 (permalink)  
Antiguo 07/02/2003, 08:54
Avatar de Isaac Mañe  
Fecha de Ingreso: enero-2002
Ubicación: Caracas
Mensajes: 396
Antigüedad: 22 años, 3 meses
Puntos: 0
Descomponer hora y hacer cálculos!

Tengo un campo de texto que contiene la hora en formato hh:mm:ss. La idea que quiero lograr es que en base al valor que contenga el campo hora, otro campo refleje un cálculo de cuanto ha costado ese tiempo en dinero.

Es decir: si una hora de determinado evento cuesta 10$, por ejemplo, cuanto sería si el campo hora tuviese en ese momento 30 minutos? La respuesta, al pulsar el botón cálculo, debería ser 5$, cierto? Como hago ese cálculo monetario en base al tiempo transcurrido y contenido en ese campo?

Necesito algo asi, como descomponer la hora y hacer... en fin... auxilio!

Gracias!
  #2 (permalink)  
Antiguo 07/02/2003, 10:43
Avatar de DanielRey
Usuario no validado
 
Fecha de Ingreso: enero-2001
Ubicación: Mendoza
Mensajes: 630
Antigüedad: 23 años, 3 meses
Puntos: 1
Hola Isaac

Es tan simple como llevarlo a su mínima expresión: segundos

Una hora consta de 3600 segundos.
Un minuto de 60 segundos.

Entonces, usando split podés separar horas minutos y segundos.

<input type=text name=horas onBlur=calculo()>
<script>
function calculo() {
Mh = horas.value.split(":");
alert(Mh[0]*3600+Mh[1]*60+parseInt(Mh[2]));
}
</script>

Si sabés cuantos pesos vale el segundo, ya está.

Suerte
  #3 (permalink)  
Antiguo 07/02/2003, 10:44
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Hola Isaac.

En estos momentos estoy algo atareado. Sin embargo, te pido que revises el FAQ-14 donde vas a encontrar un manejo de horas que está por el orden de lo que necesitas.

En ese FAQ tienes dos horas, tu solo necesitas una, pero para restar esos dos campos, se lleva cada uno de ellos a segundos cosa que tu podrías aprovechar.

Si una hora cuesta US$ 10, entonces un segundo cuesta US$ (10 /3600). Entonces calculas los segundos dentro del texto, y los multiplicas por ese factor.

Yo te invito a leer el código y a intentarlo. Si tu nivel de JS no te permite llevarlo a feliz término, pide ayuda que yo o algún otro podrá ayudarte.

Saludos.
  #4 (permalink)  
Antiguo 07/02/2003, 13:45
Avatar de Isaac Mañe  
Fecha de Ingreso: enero-2002
Ubicación: Caracas
Mensajes: 396
Antigüedad: 22 años, 3 meses
Puntos: 0
Exclamación Error

Cita:
Mensaje Original por DanielRey
Hola Isaac

Es tan simple como llevarlo a su mínima expresión: segundos

Una hora consta de 3600 segundos.
Un minuto de 60 segundos.

Entonces, usando split podés separar horas minutos y segundos.

<input type=text name=horas onBlur=calculo()>
<script>
function calculo() {
Mh = horas.value.split(":");
alert(Mh[0]*3600+Mh[1]*60+parseInt(Mh[2]));
}
</script>

Si sabés cuantos pesos vale el segundo, ya está.

Suerte
No funciona! que será?
  #5 (permalink)  
Antiguo 07/02/2003, 13:58
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
No me había percatado de que Daniel y yo respondimos al mismo tiempo.

Isaac, publica lo que has hecho para poder ayudarte.

Saludos.
  #6 (permalink)  
Antiguo 07/02/2003, 14:08
Avatar de DanielRey
Usuario no validado
 
Fecha de Ingreso: enero-2001
Ubicación: Mendoza
Mensajes: 630
Antigüedad: 23 años, 3 meses
Puntos: 1
Re: Error

Cita:
Mensaje Original por Isaac Mañe


No funciona! que será?
SI funciona... ¿que habrás hecho?
  #7 (permalink)  
Antiguo 07/02/2003, 14:10
Avatar de Isaac Mañe  
Fecha de Ingreso: enero-2002
Ubicación: Caracas
Mensajes: 396
Antigüedad: 22 años, 3 meses
Puntos: 0
Ahi va!

Previamente tengo unos cálculos hechos

function calcT3(){
with (document.frm)
horas.value = substractTimes(t1.value, t2.value);
}

para saber cuanto tiempo ha pasado entre hora1 y hora 2 ese valor lo retorna en calcT3() a través de la variable horas que mas tarde es asignada a un campo de texto para mostrarla

<input type="text" name=horas size="8" onFocus=calculo() maxlength="8">

Luego, y tomando el ejemplo posteado mas arriba

<script>
function calculo() {
Mh = horas.value.split(":");
alert(Mh[0]*3600+Mh[1]*60+parseInt(Mh[2]));
}
</script>

trate de aplicarlo pero no me dió resultado.
Claro está que yo se que en este caso me va a lanzar una alerta; pero si solo funcionara yo despues sacaría las cuentas correpondientes!

De antemano, gracias!
  #8 (permalink)  
Antiguo 07/02/2003, 14:14
Avatar de Isaac Mañe  
Fecha de Ingreso: enero-2002
Ubicación: Caracas
Mensajes: 396
Antigüedad: 22 años, 3 meses
Puntos: 0
El código si funciona solito. Pero creo que el problema es porque el campo de texto se genera solo y no es generado por alguien que lo tipea. De allí que el evento OnBlur en este caso no hace su efecto.
Además me aparece un error que dice que la variable horas no ha sido definida!
  #9 (permalink)  
Antiguo 07/02/2003, 14:18
Avatar de DanielRey
Usuario no validado
 
Fecha de Ingreso: enero-2001
Ubicación: Mendoza
Mensajes: 630
Antigüedad: 23 años, 3 meses
Puntos: 1
Cuando haces referencia a un INPUT que NO está entre las etiquetas <form> y </form>, basta que te refieras a él por su "name".

Si en cambio el INPUT ha sido colocado dentro de un form, deberás referenciarlo con el ID del form, seguido por un punto y su "name".

Probá poniendo:

<script>
function calculo() {
Mh = document.frm.horas.value.split(":");
alert(Mh[0]*3600+Mh[1]*60+parseInt(Mh[2]));
}
</script>

OJO, el método "split" se aplica sólo a cadenas de texto.

Suerte
  #10 (permalink)  
Antiguo 07/02/2003, 14:21
Avatar de Isaac Mañe  
Fecha de Ingreso: enero-2002
Ubicación: Caracas
Mensajes: 396
Antigüedad: 22 años, 3 meses
Puntos: 0
Cita:
Mensaje Original por DanielRey
Cuando haces referencia a un INPUT que NO está entre las etiquetas <form> y </form>, basta que te refieras a él por su "name".

Si en cambio el INPUT ha sido colocado dentro de un form, deberás referenciarlo con el ID del form, seguido por un punto y su "name".

Probá poniendo:

<script>
function calculo() {
Mh = document.frm.horas.value.split(":");
alert(Mh[0]*3600+Mh[1]*60+parseInt(Mh[2]));
}
</script>

OJO, el método "split" se aplica sólo a cadenas de texto.

Suerte
Gracias! Todos los dias se aprende algo nuevo!

Este si es el que es! :cantar:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:44.