Foros del Web » Programando para Internet » Javascript »

Restar dos fechas en milisegundos

Estas en el tema de Restar dos fechas en milisegundos en el foro de Javascript en Foros del Web. Buenas: Necesito obtener un par de horas en milisegundos en una variable, y luego, restarlas: Al pulsar un primer botón se obtiene la primera hora ...
  #1 (permalink)  
Antiguo 07/02/2010, 17:05
Avatar de Alun  
Fecha de Ingreso: diciembre-2009
Ubicación: Liverpool
Mensajes: 140
Antigüedad: 14 años, 11 meses
Puntos: 4
Restar dos fechas en milisegundos

Buenas:

Necesito obtener un par de horas en milisegundos en una variable, y luego, restarlas:

Al pulsar un primer botón se obtiene la primera hora (el momento en el que se ha pulsado el botón) en milisegundos.

Al pulsar un segundo botón, se obtiene la segunda hora (el momento en el que se ha pulsado), también en milisegundos, y se resta.

Tengo esto:

Código Javascript:
Ver original
  1. clic=0;
  2. var fecha1=new Date;
  3. var fecha2=new Date;
  4. function jugar(){//esto es para el primer botón
  5. if(clic==0){clic=1;}
  6. else if (clic==1){clic=0;}//esto es para controlar si es la 1ª o 2ª vez que se pulsa el botón.
  7.  
  8. if(clic==1){
  9. fecha1.getHours;
  10. fecha1 = fecha1 * 60 * 60 * 1000;}
  11. else if(clic==0){
  12. //otro código
  13. }}
  14.  
  15. function parar(){
  16. fecha2.getHours;
  17. fecha2 = fecha2 * 60 * 60 * 1000;
  18. alert(fecha2 - fecha1)}


Problema: al restar fecha2 - fecha1 siempre me sale 0. Además, si le doy una tercera vez al primer botón (se supone que todo se ha vuelto a poner como estaba al principio), me dice que getHours; no es una función (cosa que ya se...), y no se me ejecuta el script.

Por qué puede pasar esto y cómo podría arreglarlo?


Gracias
  #2 (permalink)  
Antiguo 07/02/2010, 19:42
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 6 meses
Puntos: 1485
Respuesta: Restar dos fechas en milisegundos

por supuesto te devuelve cero si estas capturando ambos tiempos al mismo momento. es decir, la linea #2 y #3. dichas variables tienen que crearse cuando se presiona el boton. el objeto Date adquiere el tiempo en el momento en que se crea el objeto, no cuando se invoca alguno de sus metodos.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 08/02/2010, 16:57
Avatar de Alun  
Fecha de Ingreso: diciembre-2009
Ubicación: Liverpool
Mensajes: 140
Antigüedad: 14 años, 11 meses
Puntos: 4
Respuesta: Restar dos fechas en milisegundos

Va, eso lo conseguí descubrir esta mañana xDD

Igualmente, he estado probando a crear los elementos justo en el momento en que se pulsan los botones, y en lugar de ponerle getHours (que me va a sacar la misma hora, a no ser que se pulsen uno ahora y otro dentro de un buen rato... xD), he puesto getMilliseconds, y luego getMinutes multiplicando por 1000 (para hallar milisegundos), pero nada, en ambos casos me sigue devolviendo 0.

Me han comentado también que puedo usar getTime, pero me devuelve una cadena en formato fecha...

Cómo puedo obtener esos milisegundos sin que el resultado sea 0? xDD

Gracias!!
  #4 (permalink)  
Antiguo 08/02/2010, 17:21
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 6 meses
Puntos: 1485
Respuesta: Restar dos fechas en milisegundos

no comprendo muy bien que es lo que quieres hacer pero sospecho que es computar el tiempo transcurrido entre dos momentos. simplemente tienes que restar las dos fechas y obtendras el tiempo en milisegundos. luego, si quieres mostrar esa informacion en segundos, minutos, horas, etc. tienes que procesarlo dividiendo para cada parte que quieras obtener. un ejemplo,
Código:
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml'><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Test Development</title>
<script type='text/javascript'>
onload = function(){
document.getElementById('start').onclick = function(){
now = new Date();
};
document.getElementById('stop').onclick = function(){
if(!self.now)return alert("Presiona 'start'");
alert("tiempo transcurrido en milisegundos: " + (new Date() - now));
delete now;
};
}
</script>
<style type='text/css'>

</style>
</head>

<body>
<input type="button" id="start" value="start" />
<input type="button" id="stop" value="stop" />
</body></html>
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 09/02/2010, 03:06
Avatar de Alun  
Fecha de Ingreso: diciembre-2009
Ubicación: Liverpool
Mensajes: 140
Antigüedad: 14 años, 11 meses
Puntos: 4
Respuesta: Restar dos fechas en milisegundos

Eso andaba buscando!!

No se por qué, al guardar el valor de la fecha en otra variable (fecha=new Date; fecha_1=fecha;) y operar con esta nueva variable, no me cogía bien algo... Haciéndolo directamente con la primera, sí me va bien.

Te voy a levantar una estatua en mi cuarto, me has solucionado (casi) todos los problemas de JS. Muchas gracias, tio!

Etiquetas: dos, fechas, restar
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 14:29.