Estoy buscando algun contador regresivo que le muestre al usuario el tiempo restante en Meses, Dias horas, minutos, segundos que queda para un evento cualquiera
//cambiar el texto
var before="mi cumpleaños"
var current="Hoy es mi cumpleaños!"
var montharray=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec" )
function countdown(yr,m,d){
var today=new Date()
var todayy=today.getYear()
if (todayy < 1000)
todayy+=1900
var todaym=today.getMonth()
var todayd=today.getDate()
var todaystring=montharray[todaym]+" "+todayd+", "+todayy
var futurestring=montharray[m-1]+" "+d+", "+yr
var difference=(Math.round((Date.parse(futurestring)-Date.parse(todaystring))/(24*60*60*1000))*1)
if (difference==0)
document.write(current)
else if (difference>0)
document.write("Faltan "+difference+" días para "+before)
}
//cambiar la fecha
countdown(2003,2,10)
</script>
Suerte.
Editado por deca, Martes, 3 de Febrero de 2004, 17:11
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>RELOJ QUE CUENTA HACIA ATRÁS</title>
<META NAME="GENERATOR" CONTENT="MAX's HTML Beauty++ 2004">
<script type="text/javascript" language="JavaScript">
// autor : jallmalatesta
var futuro = new Date (2004,1,3,20,16);
var actualiza = 5000;
function faltan(){
var ahora = new Date();
var faltan = futuro - ahora;
if (faltan > 0){
var segundos = Math.round(faltan/1000);
var minutos = Math.floor(segundos/60);
var segundos_s = segundos%60;
var horas = Math.floor(minutos/60);
var minutos_s = minutos%60;
var dias = Math.floor(horas/24);
var horas_s = horas%24;
document.formulario.reloj.value= dias + " dias : " + horas_s + " horas : " +
+minutos_s + " minutos : " + segundos_s + " segundos" ;
setTimeout("faltan()",actualiza);
}
else {
document.formulario.reloj.value= "0 dias : 0 horas : 0 minutos : 0 segundos" ;
return true;
}
}
</script>
</head>
<BODY onload="faltan()">
<form name="formulario">
<input type="text" name="reloj" value="" size="55" style="border : 0px ; text-align : center">
</form>
</body>
</html>
Comentarios:
- la variable "futuro" es la fecha del evento, como tu lo llamas, y su formato es (año, mes, dia, hora, minuto) teniendo en cuenta que Javascript cuenta los meses desde 0 y que por lo tanto estaríamos en el mes 1 (porque enero es el 0); también tener en cuenta que el año debe ponerse con las 4 cifras.
- lo que se visualiza es un reloj que cuenta hacia atrás dentro de una caja de texto (aunque no lo parezca) y la variable "actualiza" la he puesto para que decidas cada cuánto tiempo quieres que se actualice el reloj; en este caso cada 5000 ms, es decir, cada 5 s (podrías poner 1000 y se actualizaría cada segundo).
- no quise romperme la cabeza con lo de los meses (ya sabes, unos tienen 28 otros 30 y otros 31 días y eso era "muxo pa´l kuerpo, kolega" ); si alguien es capaz de modificar el script para que dé los meses "lo comparta, please" ).
salu2
Editado por jallmalatesta, Martes, 3 de Febrero de 2004, 19:33
el otro tb, funciona, lo acabo de probar en mi pc y esta okis. Fijate cdo edites no alterar la estructura del script , nada de borrar los ; u otras sentencias .
Escrito originalmente por jallmalatestaAquí tienes otro código que te puede servir:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>RELOJ QUE CUENTA HACIA ATRÁS</title>
<META NAME="GENERATOR" CONTENT="MAX's HTML Beauty++ 2004">
<script type="text/javascript" language="JavaScript">
// autor : jallmalatesta
var futuro = new Date (2004,1,3,20,16);
var actualiza = 5000;
function faltan(){
var ahora = new Date();
var faltan = futuro - ahora;
if (faltan > 0){
var segundos = Math.round(faltan/1000);
var minutos = Math.floor(segundos/60);
var segundos_s = segundos%60;
var horas = Math.floor(minutos/60);
var minutos_s = minutos%60;
var dias = Math.floor(horas/24);
var horas_s = horas%24;
document.formulario.reloj.value= dias + " dias : " + horas_s + " horas : " +
+minutos_s + " minutos : " + segundos_s + " segundos" ;
setTimeout("faltan()",actualiza);
}
else {
document.formulario.reloj.value= "0 dias : 0 horas : 0 minutos : 0 segundos" ;
return true;
}
}
</script>
</head>
<BODY onload="faltan()">
<form name="formulario">
<input type="text" name="reloj" value="" size="55" style="border : 0px ; text-align : center">
</form>
</body>
</html>
Comentarios:
- la variable "futuro" es la fecha del evento, como tu lo llamas, y su formato es (año, mes, dia, hora, minuto) teniendo en cuenta que Javascript cuenta los meses desde 0 y que por lo tanto estaríamos en el mes 1 (porque enero es el 0); también tener en cuenta que el año debe ponerse con las 4 cifras.
- lo que se visualiza es un reloj que cuenta hacia atrás dentro de una caja de texto (aunque no lo parezca) y la variable "actualiza" la he puesto para que decidas cada cuánto tiempo quieres que se actualice el reloj; en este caso cada 5000 ms, es decir, cada 5 s (podrías poner 1000 y se actualizaría cada segundo).
- no quise romperme la cabeza con lo de los meses (ya sabes, unos tienen 28 otros 30 y otros 31 días y eso era "muxo pa´l kuerpo, kolega" ); si alguien es capaz de modificar el script para que dé los meses "lo comparta, please" ).
salu2
como agrego este codigo a un bloque de php-nuke???
si lo agrego como está me sale esto:
The html tags you attempted to use are not allowed
<script languaje="JavaScript">
function setcountdown(theyear,themonth,theday,thehour,themin,thesec){
yr=theyear;mo=themonth;da=theday;hr=thehour;min=themin;sec=thesec
}
setcountdown(2005,3,23,00,00,00,00)
var opentags='<table border="1" cellpadding="0" cellspacing="0" bgcolor="#FF9900" width="270"><td align="center">'
var closetags='</td></table>'
var montharray=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec" function start_countdown(){
if (document.layers)
document.countdownnsmain.visibility
else if (document.all||document.get)
crosscount=document.get&&!document.all?document.get("countdownns" : countdownns
countdown()
}
window.onload=start_countdown
function countdown(){
var today=new Date()
var todayy=today.getYear()
if (todayy < 1000)
todayy+=1900
var todaym=today.getUTCMonth()
var todayd=today.getUTCDate()
var todayh=today.getUTCHours()
var todaymin=today.getUTCMinutes()
var todaysec=today.getUTCSeconds()
var todaystring=montharray[todaym]+" "+todayd+", "+todayy+" "+todayh+":"+todaymin+":"+todaysec
futurestring=montharray[mo-1]+" "+da+", "+yr+" "+hr+":"+min+":"+sec
dd=Date.parse(futurestring)-Date.parse(todaystring)
dday=Math.floor(dd/(60*60*1000*24)*1)
dhour=Math.floor((dd%(60*60*1000*24))/(60*60*1000)*1)
dmin=Math.floor(((dd%(60*60*1000*24))%(60*60*1000))/(60*1000)*1)
dsec=Math.floor((((dd%(60*60*1000*24))%(60*60*1000))%(60*1000))/1000*1)
if(dday<=0&&dhour<=0&&dmin<=0&&dsec<=1&&todayd==da){
if (document.layers){
}
}
else if (dday<=-1){
if (document.layers){
}
}
{
if (document.layers){
document.countdownnsmain.document.countdownnssub.document.write(opentags+dday+ "valign='center'>"+dhour+"Horas"+dmin+"Min."+dsec+"Seg."+closetags)
document.countdownnsmain.document.countdownnssub.document.close()
}
else if (document.all||document.get)
crosscount.innerHTML=opentags+dday+ " Dias<td align='center'>"+dhour+" Hrs<td align='center'>"+dmin+" Mns<td valign='center'>"+dsec+" Sgs<td valign='center'>"+closetags
}
setTimeout("countdown()",1000)
}
// end generated JavaScript. -->
</script>
<center>
<table border="3" cellspacing="2" bgcolor='F5DED3'>
<tr>
<td class="">Campo para añadir el texto que quieras que salga</td></tr>
</table>
<span id="countdownns" style="width:&{countdownwidth}; height:&{countdownheight};"></span>
</center>
En esta variable setcountdown(2005,3,23,00,00,00,00) es donde debes de poner la fecha hacia la que se hace la cuenata atrás,si cambiaslos valores ,00 podrás ver la cuenta progresiva hacia adelante.
Ojo algún usuario puede decirte que salen mal los calculos del reloj,esto es muy sencillo,este código lo que hace es extraer de su pc la fecha y hora con el comando ( get ) o sea que si el pc de alguien está mal ajustado de fecha y hora,esa persona podra ver mas o menos dias,horas,minutos y segundos en la cuenta atras de los que ralmente hay.
hola, os comento, necesito un contador hacia atras hasta cierta fecha y hora, ejemplo... yo necesito que aparezca que faltan tantos dias , tantas horas, y tantos minutos, para el siguiente acontecimiento, que seria el mismo dia de la semna, pero una seman depsues, lo tipico.... que diga... pues faltan 3 dias 20 hora sy 3 minutos para el proximo programa...... plisss... es bastante urgente.... lo necesito para antes de este domingo.... muchas gracias.....
Me funciona perfecto el código que puso jallmalatesta, pero tengo una duda... ¿cómo puedo cambiar el fondo? es que sale el texto en una especie de rectángulo alargado blanco, si pudiera quitar eso o ponerle el mismo color de fondo que la web (foro) sería mucho mejor... ¿se puede? ¿qué tengo que modificar? he probado pero no lo he conseguido T.T de todos modos seguiré intentando ahora... si alguien lo sabe que me lo diga please ;(
especificar ... aún asi lo vi y ese lo llama en un campo de formulario, algo con sencillo css se me ocurre que lo "arregla" , pero ando sin ideas para eso, y con menos ganas de ponerme a buscar .
Miarroba Networks, S.L. Apartado de correos, 50, 39610 Astillero (CANTABRIA) - CIF B-39512736 Inscrita en el Registro Mercantil de Cantabria, tomo 743, folio 161, libro 0, hoja S-12428, Instripción 1ª