Foros del Web » Programando para Internet » PHP »

Según fecha asignar estación

Estas en el tema de Según fecha asignar estación en el foro de PHP en Foros del Web. Hola tengo que mostrar una imagen según la estación del año. El caso es que no se como compar las fechas. Tengo lo siguiente, pero ...
  #1 (permalink)  
Antiguo 18/04/2005, 10:47
 
Fecha de Ingreso: enero-2002
Ubicación: Barcelona
Mensajes: 279
Antigüedad: 15 años, 11 meses
Puntos: 1
Según fecha asignar estación

Hola

tengo que mostrar una imagen según la estación del año.

El caso es que no se como compar las fechas.

Tengo lo siguiente, pero no va de ninguna forma:

define("OTONO","23-09");
define("INVIERNO","21-12");
define("PRIMAVERA","21-03");
define("VERANO","21-06");

$fecha_hoy = date(d)."-".date(m);

switch($fecha_hoy)
{
case strtotime ($fecha_hoy)>strtotime (INVIERNO) AND strtotime ($fecha_hoy)<strtotime (VERANO):
$icono = $icono_estacion["primavera"];
break;
case strtotime ($fecha_hoy)>strtotime (PRIMAVERA) AND strtotime ($fecha_hoy)<strtotime (OTONO):
$icono = $icono_estacion["verano"];
break;
case strtotime ($fecha_hoy)>strtotime (VERANO) AND strtotime ($fecha_hoy)<strtotime (INVIERNO):
$icono = $icono_estacion["otono"];
break;
case strtotime ($fecha_hoy)>strtotime (OTONO) AND strtotime ($fecha_hoy)<strtotime (PRINAVERA):
$icono = $icono_estacion["invierno"];
break;
default: $icono = "ico_vacio.gif";

}

LLevo 3 horas dándole vueltas a esta chorrada y no encuentro la fórmula.

Saludos
__________________
Sataca - La Retícula
www.lareticula.com
  #2 (permalink)  
Antiguo 18/04/2005, 12:25
 
Fecha de Ingreso: diciembre-2003
Mensajes: 213
Antigüedad: 14 años
Puntos: 0
Mira, pues yo no se que decirte sobre porque está mal o no, pero yo te digo como trabajo yo con las fechas, porque lo del strotime no me gusta nada y me lia.

Yo lo que hago es comparar directamente strings, asi en tu caso formariamos los string
como date("M") y date("d") (bueno, como sea pero se siempre sean dos digitos)
y asi formar fechas como "0401" (1 de abril)
y poderlas comparar directamente.

"0523" (23 de Mayo) > "0401" (1 de Abril) ----> Si, porque los strings los compara caracter a caracter.

No se, a mi me facilita mucho las cosas y asi no tengo que andar con fechas en formato timestamp que me lía mucho.

Bueno, pues ojala te sirva.

Ah y por cierto, se puede usar "AND" en php? yo me imaginaba que solo aceptaba "&&"
Bueno, a parte no entiendo muy bien esa forma de estructurar el "switch", realmente no te esta dando errores de compilacion????


P.D.
  #3 (permalink)  
Antiguo 18/04/2005, 13:13
 
Fecha de Ingreso: enero-2002
Ubicación: Barcelona
Mensajes: 279
Antigüedad: 15 años, 11 meses
Puntos: 1
Hola

no no me da errores de compilación el AND, aunque probaré con && no sea que el problema esté ahi.

El switch es como un if, else if.

La solución de comparar lo strings no me sirve. La cuestión es saber si una fecha está comprendida entre dos.

Por ejemplo, saber si hoy 18_4 es primavera, verano o que.

¿Me explicó?
__________________
Sataca - La Retícula
www.lareticula.com
  #4 (permalink)  
Antiguo 19/04/2005, 02:26
 
Fecha de Ingreso: diciembre-2003
Mensajes: 213
Antigüedad: 14 años
Puntos: 0
Te explicas perfectamente, y bueno, ya se que es un switch, pero no estoy deacuerdo en la forma en que lo usas, vamos que para mi un switch tiene que ser

switch (fecha)
{
case '18-4': ..........
}

y no para hacer comparaciones dentro del case (strtotime ($fecha_hoy)>strtotime (OTONO) && ........)
Pero bueno, como no puedo asegurar que sea eso lo que este mal, tu veras, pero sigo sin verlo claro.

Ademas strtotime("18-4") no te esta devolviendo la fecha bien, por eso te decia lo de que compararas strings directamente (Dices que no te sirve porque quieres saber si una fecha esta comprendida entre dos, ya, y que tiene que ver eso para no hacerlo comparando directamente los strings del tipo (mmdd)?)
Recuerda que a strtotime le tienes que pasar una fecha en formato ingles.
  #5 (permalink)  
Antiguo 19/04/2005, 02:40
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Por qué no lo haces simplemente por el día del año?? date('z') ???
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #6 (permalink)  
Antiguo 19/04/2005, 02:49
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Ejemplo (solución?) de lo sugerido anteriormente:
Código PHP:
<?php
// el día del las fechas definidas que tienes puedes sacarlo con algo como
// date('z', mktime(0,0,0,12,21,2005));
// ya hice el trabajo... pero confirmalo

$hoydate('z');
if(
$hoy<79) echo "INVIERNO";
elseif (
$hoy<171) echo "PRIMAVERA";
elseif (
$hoy<265) echo "VERANO";
elseif (
$hoy<354) echo "OTOÑO";
else echo 
"INVIERNO";
?>
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #7 (permalink)  
Antiguo 03/05/2005, 10:29
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 15 años, 11 meses
Puntos: 1
Saludos.

El tema de saber en que epoca del año estoy me parece muy bien, pero ahora, como se cuantas horas debo (restar / sumar) a la hora local, para que siempre me muestre la hora de mi país (venezuela) y no la de la ubicación del servidor.?

Gracias
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.
  #8 (permalink)  
Antiguo 03/05/2005, 21:13
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Esto? http://www.forosdelweb.com/f18/manejo-fechas-290884/
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
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 13:15.