Htm mostrar un documento según día y hora

Tengo una pagina con varias imágenes con hiperbinculos a documentos pdf, wor, xls, etc

Necesito que a partir de un día a una hora determinada al pulsar en esa misma imagen en vez de abrir un documento, abra otro

Ejemplo ahora al pinchar en la imagen "oferta" se muestra la oferta del mes de noviembre ( ofer noviembre.pdf), pero necesito que si el día 1 de febrero a las 00 horas pulsan en dicha imagen la oferta que muestre sea la de diciembre (ofer diciembre.pdf)

He pensado que al pinchar en la imagen me envíe a otra pagina htm o asp y que sea esta pagina la que mande abrir un fichero u otro según estemos antes o después de la fecha y hora indicada indicada

He estado mirando por internet mucho, pero no he conseguido nada

1 Respuesta

Respuesta
1

Lamentablemente para esto tienes dos opciones, o usas una tecnología servidor (como php, asp, .net, jsp etc) o haces el cambio de manera manual de los archivos en el ftp por ejemplo que cada hora cambies el nombre de los archivos sin cambiar la ruta cambiar.

Buenas según he leído si es posible

he encontrado un fichero que hace mas o menos lo que necesito, pero que lo que cambia es la imagen, y necesitaría que lo que cambiase fuera la pagina antes "Hoy.htm" y pasada la fecha y hora "Ayer.htm"

Yo no he sabido adaptar el código que te digo te lo adjunto por si me puedes ayudar o te da una idea de como hacerlo

function inicio(){
actualizaImagenesFinalizado();
}
function actualizaImagenesFinalizado(){
var srcimagen;
var ahora = new Date();
var inicio, descanso, reanudación, fin;
for (ix=1; document.getElementById("fechahorainicio_" + ix); ix++){
inicio = construyeFecha(document.getElementById("fechahorainicio_" + ix).value);
descanso = sumaMinutosFecha(inicio, 48); //48 por los minutillos de descuento que siempre hay
reanudación = sumaMinutosFecha(descanso, 15);
fin = sumaMinutosFecha(reanudación, 48); //48 por los minutillos de descuento que siempre hay
if (ahora < inicio){
srcimagen = "imágenes/no_comenzado.gif";
}
else if (ahora < descanso){
srcimagen = "imágenes/jugando_primera_parte.gif";
}
else if (ahora < reanudación){
srcimagen = "imágenes/descanso.gif";
}
else if (ahora < fin){
srcimagen = "imágenes/jugando_segunda_parte.gif";
}
else{
srcimagen = "imágenes/terminado.gif";
}
alert(srcimagen);
document.getElementById("imagenEstadoPartido_" + ix).src = srcimagen;
}
}
function construyeFecha(stringfecha){
var día = parseInt(stringfecha.substring(0,2));
var mes = parseInt(stringfecha.substring(3,5)) - 1;
var anio = parseInt(stringfecha.substring(6,10));
var hora = parseInt(stringfecha.substring(11,13));
var minuto = parseInt(stringfecha.substring(14,16));
return new Date(anio, mes, día, hora, minuto);
}
function sumaMinutosFecha(fecha, minutos){
var nueva = new Date();
nueva.setTime(fecha.getTime() + (minutos * 60 * 1000));
return nueva;
}
</script>
</head>
<body onload="inicio()">
<table>
<tr>
<td></td>
<td>17 Abril 2011 a las 20:45<input type="hidden" id="fechahorainicio_1" value="29-11-2013 13:55"></input></td>
<td><img id="imagenEstadoPartido_1"></img></td>
</tr>
<tr>
<td></td>
<td>17 Abril 2011 a las 20:30<input type="hidden" id="fechahorainicio_2" value="29-11-2013 14:00"></input></td>
<td><img id="imagenEstadoPartido_2"></img></td>
</tr>
</table>
</body>
</html>
</body>
</html>

Entiendo, disculpa por no contemplar la opción de utilizar javascript para esta acción (aunque no la recomiendo, es posible realizar)

Intentemos a ver si esto nos ayuda con tu problema

<html>
<head><script>
function cambioEnlace(){
fechaActual = new Date().getTime();
fechaDeCambio =new Date(2013,12,02,11,58,00).getTime();
if(fechaDeCambio > fechaActual){
document.getElementById("enlace1").href="index.php/ayer.html";
document.getElementById("enlace1").href="index.php/hoy.html";
}
}
</script>
</head>
<body onload="cambioEnlace()">
<table>
<tr>
<td></td>
<td>enlace que cambiara a ayer</td>
<td><a href="index.php/hoy.html" id="enlace1">Enlace hoy</a></td>
</tr>
<tr>
<td></td>
<td>Enlace que cambiara a hoy</td>
<td><a href="index.php/ayer.html" id="enlace2">Enlace ayer</a></td>
</tr>
</table>
</body>
</html>
</body>
</html>

Como ves, existen dos enlaces uno marcando a la pagina index.php/hoy.html y otro marcando a la pagina index.php/ayer.html, si la fecha de cambio es mayor a la fecha actual los enlaces se modificaran en la función.

Para decretar cual fecha es la que necesitas para el cambio modifica esta linea

fechaDeCambio =new Date(2013,12,02,11,58,00).getTime();

Cambiando los valores e año, mes, día, hora, mes y segundos respectivamente
Si te sirve, podríamos modificarlo para que te sea más útil.

vamos por buen camino, pero no es lo que necesito, te cuento lo que tengo y lo que necesito

tengo una pagina con varios enlaces, esta pagina es siempre la misma,

necesito que al pinchar en uno de los enlaces la pagina que se abra sea distinta de la existente al llegar a una fecha y día

dicho de otra manera, el enlace abre un documento, que automáticamente redirecciona a una pagina o a otra si ya se ha escedido la fecha y hora

ejemplo

enlace de la pagina con muchos otros enlaces oferta del mes este enlace va a la pagina "fechayhora.htm"

La pagina "fechayhora.htm", no es una pagina que se muestre, es una pagina que rediciona o otra pagina distinta según la fecha y hora

de esta manera por ejemplo al seleccionar el enlace " oferta del mes" en el mes de noviembre redicionara y mostrara la pagina "noviembre.htm" y llegado el día 1/12 a las 00:00 mostrara la pagina " diciembre.htm "

Importante a veces las paginas que tiene que abrir son .asp por lo que tendría que valer para ambos tipos de paginas


Un saludo y muchas gracias

Entiendo tu pregunta, a lo que voy es que es posible realizarlo con el método que te entregué sin necesidad de pasar por la página de "redireccionamiento" ya que desde

Las lineas:
document.getElementById("enlace1").href="index.php/ayer.html";
document.getElementById("enlace1").href="index.php/hoy.html";

Puedes decidir hacia donde ir en función del resultado de la comparación de fechas.

De igual forma tratare de planificar una solución a lo que me planteas y creo que se podrá realizar de la siguiente manera:

1-Haz el siguiente archivo html

<html>
<head><title>Paginas</title></head>
<body>
<table>
<tr>
<td></td>
<td>Enlace de las ofertas del mes</td>
<td><a href="ofertasdelmes.html" id="enlace1">Ofertas del mes</a></td>
</tr>
<tr>
<td></td>
<td>Otro enlace</td>
<td><a href="otroenlace.html" id="enlace2">Otro enlace1</a></td>
</tr>

<tr>
<td></td>
<td>Enlace que cambiara a hoy</td>
<td><a href="otroenlace2.html" id="enlace3">Otro enlace 2</a></td>
</tr></table>
</body>
</html>
</body>
</html>

Cuando se haga click en las ofertas del mes vamos a la pagina ofertasdelmes.html donde tendrás solo el siguiente código

<script>
meses=new Array();
meses[0]="enero";
meses[1]="febrero";
meses[2]="marzo";
meses[3]="abril";
meses[4]="mayo";
meses[5]="junio";
meses[6]="julio";
meses[7]="agosto";
meses[8]="septiembre";
meses[9]="octubre";
meses[10]="noviembre";
meses[11]="diciembre";
mes=new Date().getMonth();
window.location.href=meses[mes]+".html";
</script>

Ahora solo tendrás que preparar una pagina por cada mes (enero.html, febrero.html etc) donde automáticamente y en función de la fecha se cambiará a la pagina correspondiente, en caso de que las paginas varíen en extensión tienes dos opciones. O modificas el valor desde la linea window.location.href=meses[mes]+".html"; y cambias el html por la extensión especifica o en caso de que no se puedan controlar de esta forma puedes hacer que cada mes dentro del array lleve una extensión especifica y quitarías la extensión del al linea anteriormente indicada.

<script>
meses=new Array();
meses[0]="enero.html";
meses[1]="febrero.asp";
meses[2]="marzo.jsp";
meses[3]="abril.php";
meses[4]="mayo.htm";
...
...
mes=new Date().getMonth();
window.location.href=meses[mes];
</script>

Espero que esta solución sea de tu agrado, si no.

esta fenomenal, lo que pasa es que los cambios no se realizan siempre a principio de mes, ni duran el mes completo, cuando empieza una tampoco se sabe por cuanto tiempo y ademas no hay todos los meses

Lo que si se con un indeterminado numero de días antes cuando va a cambiar, porlo que solo necesito que cambie una vez en una fecha y hora que yo le indique

Un saludo y muchas gracias

Entonces volvemos al primer ejercicio pero con la nueva estructura.

Modificamos el archivo ofertasdemles.html

//tomas la fecha actual de tu navegador

fechaActual = new Date().getTime();

//le asignas la fecha en la cual deseas que cambie la pagina de ofertas

//esta función recibe los parámetros en el siguiente orden

//año, mes, día, hora, minutos, segundos

fechaDeCambio =new Date(2014,01,01,11,58,00).getTime();
if(fechaDeCambio > fechaActual){

//cambiamos de mes
window.location.href="sigueintemes.html";
}else{

//te mantienes en el mes o periodo actual

window.location.href=mesactual.php;

}

perdona las molestias, pero no me funciona, el enlace de la pagina anterior me envía a la pagina "fechayhora.htm" en donde he puessto el código queue me indicas

adjunto el código completo porque yo no tengo idea de esto y seguro que me he dejado de poner algo, me muestra una hoja totalmente en blanco

CÓDIGO

<html>
<head>
<title>Untitled</title>
<script>
fechaActual = new Date().getTime();
fechaDeCambio =new Date(2014,01,01,11,58,00).getTime();
if(fechaDeCambio > fechaActual){
window.location.href=Index 1.htm;
}else{
window.location.href=Index 2.htm;
}
</script>
</head>
</html>

un saludo muchas gracias y perdona por mi incapacidad

Los nombres de las páginas van entre comillas y sin espacios

window.location.href="Index1.htm";

Lo que sucede es que el sitio está generando errores javascript por eso no eres redireccionado.

buenas tardes

Perdona por no habértelo indicado, pero lo de las comillas ya lo sabia y lo había cambiado y solo me muestra el index 1, independientemente de que la fecha sea anterior o posterior

Un apunte, el servidor es un servidor antiguo y no admite ficheros con 4 letras en la terminación,

ejemplo

no admite html , pero si admite htm

no admite docx , pero si admite doc, ......

Un saludo y gracias

¿Es posible que me indiques el error javascript que se genera cuando llegas al archivo fechayhora.htm?

He testeado el script y por lo menos en mi computadora funciona.

En el archivo fechayhora.htm pega lo siguiente:

<script>
fechaActual = new Date().getTime();
fechaDeCambio =new Date(2013,12,04,16,26,00).getTime();
if(fechaDeCambio < fechaActual){
window.location.href="mesactual.html";
}else{
window.location.href="siguientemes.html";
}
</script>

en el index pega lo siguiente:

<html>
<head><title>Paginas</title></head>
<body>
<table>
<tr>
<td></td>
<td>Enlace de las ofertas del mes</td>
<td><a href="fechayhora.htm" id="enlace1">Ofertas del mes</a></td>
</tr>
</table>
</body>
</html>
</body>
</html>

Perdona ya funciona sin tener que hacer el ultimo paso, lo que pasa es que no actualiza al salir de la pagina y volver a entrar, tienes que abandonar el internet y volver a entrar para que se entere del cambio

¿Se puede hacer algo para que actualice al cambiar de pagina y volver ?

Tienes que limpiar la cache del navegador cada vez que entres al index (o a la pagina donde están todos los enlaces) eso lo haces con meta tags de html.

<a>http://www.elguille.info/HTMLscripts/HTML_meta.htm</a>

Esta es una de las razones por las cuales no comparto la solución (aunque ya la desarrollamos), cuando desees mejorar esta funcionalidad intenta desarrollarlo desde un lenguaje servidor. El problema actualmente no es precisamente la cache del navegador, si no que, en caso de que un cliente haya cambiado la hora de su computadora, tu script queda a merced del resultado de la validación local no en el servidor donde puedes controlar esa variable.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas