Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Contador regresivo usando horas de PHP

Estas en el tema de Contador regresivo usando horas de PHP en el foro de Javascript en Foros del Web. Hola amigos... Llevo días peleando con un código que no sé qué tiene de extraño pero no funciona... El problema viene cuando intento usar la ...
  #1 (permalink)  
Antiguo 04/04/2012, 13:56
Avatar de Tollelle  
Fecha de Ingreso: enero-2005
Mensajes: 64
Antigüedad: 19 años, 10 meses
Puntos: 0
Pregunta Contador regresivo usando horas de PHP

Hola amigos...

Llevo días peleando con un código que no sé qué tiene de extraño pero no funciona...
El problema viene cuando intento usar la hora actual del servidor apache con la función date() de php... si uso la hora del cliente con new Date() no hay problemas...
pero si intento definir una fecha específica tipo: new Date(2012,04,04,21,48,19) el contador no resta... se queda congelado...

¿alguien podría echarme un cable al respecto?

Código HTML:
Ver original
  1. <script type="text/javascript" language="JavaScript">
  2. function calcula(id){
  3.     var fecha=new Date(2012,04,06,20,00,00)
  4.     var hoy=new Date(2012,04,04,21,48,19)
  5.     var dias=0
  6.     var horas=0
  7.     var minutos=0
  8.     var segundos=0
  9.  
  10.     if (fecha>hoy){
  11.         var diferencia=(fecha.getTime()-hoy.getTime())/1000
  12.         dias=Math.floor(diferencia/86400)
  13.         diferencia=diferencia-(86400*dias)
  14.         horas=Math.floor(diferencia/3600)
  15.         diferencia=diferencia-(3600*horas)
  16.         minutos=Math.floor(diferencia/60)
  17.         diferencia=diferencia-(60*minutos)
  18.         segundos=Math.floor(diferencia)
  19.  
  20.         document.getElementById(id).innerHTML= dias + '<span class=f12>d</span> ' + horas + '<span class=f12>h</span> ' + minutos + '<span class=f12>m</span> ' + segundos + '<span class=f12>seg</span>'
  21.  
  22.         if (dias>0 || horas>0 || minutos>0 || segundos>0){
  23.             setTimeout("calcula(\"" + id + "\")",1000)
  24.         }
  25.     }
  26.     else{
  27. document.getElementById("cuenta_atras").style.display = 'none';
  28.     }
  29. }</script>

Gracias de antemano ;)
  #2 (permalink)  
Antiguo 04/04/2012, 16:58
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: Contador regresivo usando horas de PHP

¡buenas!
por supuesto se va quedar congelado si siempre le estas dando la misma fecha. o sea, la variable fecha y hoy siempre reciben los mismos parámetros en cada invocación. si quieres usar una fecha del servidor, pásale a javascript el timestamp en lugar de los valores de cada componente. el timestamp es un valor universal, de modo que si el servidor está en Portugal (GMT 0) y un usuario está en España (GMT +1), el mismo timestamp representa el mismo momento aunque diferentes horas según la zona. por ejemplo, el timestamp 1336348800000 representa el día lunes 7 de mayo del 2012 12 media noche en la zona GMT 0. pero en ese mismo momento, en la zona GMT +1 el mismo timestamp es lunes 7 de mayo del 2012 1am. entonces, la variable fecha la inicias con el timestamp y la variable hoy la inicias con la fecha hora local del usuario (sin argumentos).
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 05/04/2012, 05:30
Avatar de Tollelle  
Fecha de Ingreso: enero-2005
Mensajes: 64
Antigüedad: 19 años, 10 meses
Puntos: 0
Respuesta: Contador regresivo usando horas de PHP

Creo que no me he explicado bien o no he entendido tu respuesta.

Lo que construyo con php en la fecha del día de hoy es:

var hoy=new Date(<?php echo date("Y,m,d,H,i,s") ?>)

esto me ofrece una línea tipo:

var hoy=new Date(2012,04,04,21,48,19)

Eso debería darme el valor del servidor cada vez que se invoca, o eso entiendo yo...

La variable fecha debe ser fija, ya que es la fecha y hora de finalización de la cuenta atrás mientras que la var hoy debe ser la fecha actual del servidor y no la del cliente/usuario.

No entiendo realmente tu respuesta.

Gracias de todas formas

Etiquetas: contador, funcion, horas, html, php, regresivo
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 08:19.