(ayu) Script q calcule horas, minutos, seg para una fecha

Publicado por BetoRock, Octubre 12, 2007, 06:47:47

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

BetoRock

Estoy buscando algun script que puedo calcular cuanto tiempo falta para tal fecha...

lo que encontre fue esto y qusiera saber si se puede modificar para lo que yo quiero....

CitarEste JavaScript calcula los días, horas, minutos y segundos faltantes para que termine el año corriente. Lo mismo realiza para el tiempo que ha pasado desde que empezó el año.

El Script comienza con la función Tiempo() que es llamada desde el evento onLoad de la etiqueta <BODY>, por lo que se ejecutará a la carga de la página. Comenzamos definiendo unas cuentas variables que nos servirán para calcular el tiempo faltante y pasado respecto a una fecha determinada.

FechaHoy=new Date();: devuelve la fecha actual del sistema en formato 24 horas. Los datos que podemos recoger de este valor son: el año, mes, el día, día de la semana, hora, minuto, segundo, zona horaria. Al estar la hora en formato 24 horas la función devolverá, por ejemplo para las 5 de la tarde, las 17 horas.
FechaFin=new Date(FechaHoy.getFullYear(),11,31,23,59,59); Esta función devolverá la fecha: año-corriente Diciembre 31 23:59:59 . Con esta fecha calcularemos el tiempo faltante para que termine el año. Podemos ver como se utilizó la función FechaHoy.getFullYear() para permitir actualizar el año automáticamente.
MSxDia=24*60*60*1000;: El valor guardado en esta variable son la cantidad de milisegundos que tiene un día (86400000 milisegundos). Lo usaremos para calcular los días faltantes.
anyoact=FechaHoy.getFullYear();: Guardamos el año actual correspondiente a la fecha del sistema.
anyoprox=FechaHoy.getFullYear()+1;: Guardamos el año actual y le sumamos uno por lo que nos quedará el año próximo.
Hora=24 - FechaHoy.getHours();: Esto nos permite calcular la hora faltante para que termine el día. La función devuelve la hora de sistema, es decir, las horas que han pasado en el día actual y le restamos 24 para saber cuantas horas faltan para terminar el día.
Minutos=60 - FechaHoy.getMinutes();: Devuelve los minutos pasados en la hora actual y le resta 60 para calcular los minutos que faltan para el cambio de hora.
Segundos=60 - FechaHoy.getSeconds();: Devuelve los segundos pasados en el minuto actual y le resta 60 para calcular los segundos que faltan para el cambio de minuto.
DiasPasan=new Date(FechaHoy.getFullYear()-1,11,31,23,59,59);: El valor que guardamos en esta variable lo utilizaremos para calcular los días que pasaron del año corriente.
DiasPasan=DiasPasan.getTime();: Volvemos a definir el valor de la variable mediante esta función. El valor devuelto serán los milisegundos transcurridos desde la fecha 1/1/1970 hasta la fecha almacenada en mediante la función anterior.

Una vez definidas todas las variables pasaremos a calcular los días faltantes para que se complete el año corriente o dicho de otra forma los días que faltan para el siguiente año. Esto lo hacemos con la función getTime() sobre la fecha fin que definimos anteriormente y la fecha actual del sistema. Esta función devuelve el tiempo en milisegundos que pasaron desde la fecha Enero 1 de 1970, por lo que el valor devuelto para FechaFin.getTime() será de 1199156399000 milisegundos y para FechaHoy.getTime() será de la cantidad de milisegundos pasados desde la fecha 1/1/1970 a la fecha actual del sistema. Para explicar mejor el ejemplo vamos a suponer que la fecha actual del sistema es 22/4/2007. Entonces el valor que devuelve esta segunda función es de 1177254079288 milisegundos que obviamente van cambiando a medida que corren los segundos en la computadora que ejecuta el JavaScript. Si restamos estos dos valores tenemos el tiempo en milisegundos que falta para completar el año. La resta de estos dos valores sería 21902319712 milisegundos. Si a este valor lo dividimos por la cantidad de milisegundos que tiene un día obtendremos 253,49907074074074074074074074074 días. Como podemos ver el número proviene de un división que arroja un resto que corresponden a las horas, minutos y segundos que no llegan a completar un día. Este resto no nos interesa así que debemos eliminarlo mediante Math.floor(). El método floor() del objeto Math redondea el número a su valor inferior. Para nuestro ejemplo el valor devuelto sería 253 días. Este valor lo guardamos en la variable DiasFaltan.

Para calcular los días pasados hacemos exactamente lo mismo pero utilizando los valores que guardamos en la variable DiasPasan. Primero restamos el valor de FechaHoy.getTime() que es el mismo que utilizamos anteriormente por el valor de DiasPasan que almacenamos en la variable anterior y lo dividimos por los milisegundos que tiene un día completo. Estos nos da la cantidad de días exactos que transcurrieron desde el comienzo del año corriente hasta la fecha actual. Nuevamente volvemos a utilizar el método floor() para redondear el valor.

Lo que resta es armar el texto con los valores finales de las dos variables DiasFaltan y DiasPasan y complementamos colocando las horas, minutos y segundos faltantes y pasados para cada uno de los cálculos. Los valores finales los colocamos en un elemento de formulario tipo text al cual le asignamos algunas propiedades como el ancho, alineación, acceso de solo lectura y color de fondo.

Para que el Script funcione como si fuera un reloj en tiempo real utilizamos la función setTimeout() que llama a la ejecución de la función Tiempo() cada 1000 milisegundos (1 segundo).

Calcular los días, horas, minutos y segundos faltantes para una fecha.
Colocamos el JavaScript entre las etiquetas <HEAD> y </HEAD>
Llamamos a la función desde el evento onLoad de la etiqueta <BODY>


<HTML>
<HEAD>

<SCRIPT language="javascript">

/* Creamos la función */
function Tiempo() {

/* Definimos las variables */
FechaHoy=new Date();
FechaFin=new Date(FechaHoy.getFullYear(),11,31,23,59,59);
MSxDia=24*60*60*1000;
anyoact=FechaHoy.getFullYear();
anyoprox=FechaHoy.getFullYear()+1;
Hora=24 - FechaHoy.getHours();
Minutos=60 - FechaHoy.getMinutes();
Segundos=60 - FechaHoy.getSeconds();
DiasPasan=new Date(FechaHoy.getFullYear()-1,11,31,23,59,59);
DiasPasan=DiasPasan.getTime();

/* Calculamos los días que faltan para que termine el año */
DiasFaltan=(FechaFin.getTime() - FechaHoy.getTime()) / MSxDia;
/* redondeamos el valor */
DiasFaltan=Math.floor(DiasFaltan);

/* Calculamos los días que pasaron en el año corriente */
DiasPasan=(FechaHoy.getTime()-DiasPasan) / MSxDia;
/* redondeamos el valor */
DiasPasan=Math.floor(DiasPasan);

/* Armamos el texto con los valores correspondientes a los días faltantes */
tiempofalta = "Faltan " +DiasFaltan+" días "+Hora+" horas "+Minutos+
" minutos "+Segundos+ " segundos para el Año "+anyoprox;
/* Asignamos a la propiedad value el valor de la variable */
document.form.tiempofalta.value = tiempofalta;

/* Armamos el texto con los valores correspondientes a los días que pasaron */
tiempopasa = "Han pasado "+DiasPasan+" días "+FechaHoy.getHours()+
" horas "+FechaHoy.getMinutes()+" minutos "+FechaHoy.getSeconds()+
" segundos desde que empezó el "+anyoact;
/* Asignamos a la propiedad value el valor de la variable */
document.form.tiempopasa.value = tiempopasa;

/* Volvemos a ejecutar la función cada 1 segundo */
setTimeout('Tiempo()', 1000);

}

</SCRIPT>

</HEAD>

<BODY onLoad="Tiempo()">

<CENTER>

<!-- Creamos los dos cuadros de texto que contienen el texto y variables
que muestran los días, horas, minutos y segundos faltantes y pasados -->
<FORM name="form">
<INPUT type="text" name="tiempofalta" style="border-width:0; width:520;
text-align:center; background-color:#FFFFFF; " readonly disabled="disabled">

<br>

<INPUT type="text" name="tiempopasa" style="border-width:0; width:520;
text-align:center; background-color:#FFFFFF; " readonly disabled="disabled">

</FORM>

</CENTER>

</BODY>
</HTML>





Lo que quiero lograr es que diga... Faltan X dias X Min X seg para "tal evento" espero que se pueda ;)

desde ya muchas Gracias :up:

BetoRock

Sorry por la molestia pero ya encontre uno :jaja: :jaja: :jaja:

Lo dejo por si alguen lo necesita... Lo q hay q cambiar es:

var anioFinal = 2006 //año de la fecha
var mesFinal = 12 //mes de la fecha
var diaFinal = 25 //día de la fecha
var mensajeInicio = "Faltan "
var mensajeFinal = " para Navidá!"


Entero tiene que quedar asi :palmas: :palmas: :palmas:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Cuenta atr&aacute;s de una fecha</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
/*****************************************************************************
Cuenta atrás de una fecha. Script por Tunait! 12/agosto/2003
Si quieres usar este script en tu sitio eres libre de hacerlo con la condición de que permanezcan intactas estas líneas, osea, los créditos.
No autorizo a publicar y ofrecer el código en sitios de script sin previa autorización
Si quieres publicarlo, por favor, contacta conmigo.
http://javascript.tunait.com/
tunait@yahoo.com
******************************************************************************/
var anioFinal = 2006 //año de la fecha
var mesFinal = 12 //mes de la fecha
var diaFinal = 25 //día de la fecha
var mensajeInicio = "Faltan "
var mensajeFinal = " para Navidá!"

mesFinal -= 1
function faltan()
{
fechaFinal = new Date(anioFinal,mesFinal,diaFinal)
fechaActual = new Date()
diferencia = fechaFinal - fechaActual
diferenciaSegundos = diferencia /1000
diferenciaMinutos = diferenciaSegundos/60
diferenciaHoras = diferenciaMinutos/60
diferenciaDias = diferenciaHoras/24
diferenciaHoras2 = parseInt(diferenciaHoras) - (parseInt(diferenciaDias) *24)
diferenciaMinutos2 = parseInt(diferenciaMinutos) - (parseInt(diferenciaHoras) * 60)
diferenciaSegundos2 = parseInt(diferenciaSegundos) - (parseInt(diferenciaMinutos) * 60)
diferenciaDias = parseInt(diferenciaDias)
if (diferenciaDias < 10 && diferenciaDias > -1){diferenciaDias = "0" + diferenciaDias}
if(diferenciaHoras2 < 10 && diferenciaHoras2 > -1){diferenciaHoras2 = "0" + diferenciaHoras2}
if(diferenciaMinutos2 < 10 && diferenciaMinutos2 > -1){diferenciaMinutos2 = "0" + diferenciaMinutos2}
if(diferenciaSegundos2 < 10 && diferenciaSegundos2 > -1){diferenciaSegundos2 = "0" + diferenciaSegundos2}
if(diferenciaDias <= 0 && diferenciaHoras2<= 0 && diferenciaMinutos2 <= 0 && diferenciaSegundos2 <= 0)
{
diferenciaDias = 0
diferenciaHoras2 = 0
diferenciaMinutos2 = 0
diferenciaSegundos2 = 0
document.getElementById('pepe').innerHTML = mensajeInicio + diferenciaDias + " días, " + diferenciaHoras2 + " horas, " + diferenciaMinutos2 + " minutos, " + diferenciaSegundos2 + mensajeFinal
}
else{
document.getElementById('pepe').innerHTML = mensajeInicio + diferenciaDias + " días, " + diferenciaHoras2 + " horas, " + diferenciaMinutos2 + " minutos, " + diferenciaSegundos2 + mensajeFinal
setTimeout('faltan()',1000)
}
}

</script>
<style type="text/css">
<!--
.faltan {
font-family: Tahoma, Verdana, Arial;
font-size: 12px;
color: #0066CC;
background-color: #FFFFFa;
text-align: center;
}
-->
</style>
</head>

<body bgcolor="#FFFFFA" >
<table width="56%" border="0" align ="center">
  <tr>
    <td nowrap class="faltan" id="pepe">&nbsp;</td>

  </tr>
</table>
<script language="JavaScript">faltan()</script>
</body>
</html>