Foros del Web » Programando para Internet » PHP »

Condicional con fechas

Estas en el tema de Condicional con fechas en el foro de PHP en Foros del Web. Hola Tengo dos fechas Cita: FechaActual ---> 01/11/2009 FechaLimite ---> 01/05/2010 Ahora hago una condicional para saber si FechaActual es mayor o menor que FechaLimite. ...
  #1 (permalink)  
Antiguo 15/11/2009, 14:45
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Condicional con fechas

Hola

Tengo dos fechas
Cita:
FechaActual ---> 01/11/2009
FechaLimite ---> 01/05/2010
Ahora hago una condicional para saber si FechaActual es mayor o menor que FechaLimite. El problemas es que me dice que FechaActual es mayor que FechaLimite

Código PHP:
<?php
If (!isset($_GET["mes"])) {
$Mes date("m");
} else { 
$Mes $_GET["mes"];
}
If (!isset(
$_GET["anyo"])) {
$ElAnyo date("Y");
} else {
$ElAnyo $_GET["anyo"];
}
$FechaInicio date("m/01/Y");
$div_fecha explode "/"$FechaInicio);
$meses mktime (000date("$div_fecha[0]")+61date("$div_fecha[2]"));
$FechaActual date($Mes."/01/".$ElAnyo);
$FechaLimite date("m/d/Y"$meses);
if (
$FechaActual $FechaLimite) { 
echo 
"No está en el rango";
} else {
echo 
"Está en rango";
}
?>
Gracias
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #2 (permalink)  
Antiguo 15/11/2009, 15:09
Avatar de murderer  
Fecha de Ingreso: marzo-2009
Ubicación: Argentina/Misiones/Iguazu/Localhost
Mensajes: 196
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Condicional con fechas

Se me ocurre meter mktime
aqui:
$FechaActual = date($Mes."/01/".$ElAnyo);
$FechaLimite = date("m/d/Y", $meses);

Saludos y suerte!
__________________
"Cuando te propones una meta todo el mundo conspira para que puedas lograrlo." Puedes encontrame en Twitter

Última edición por murderer; 15/11/2009 a las 15:23
  #3 (permalink)  
Antiguo 17/11/2009, 07:12
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Condicional con fechas

Gracias, pero no es la solución

Os dejo todo el script a ver dais con ello
La parte en rojo es la que da problemas

Cita:
<html>
<head>
<title>CALENDARIO</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
.calFondoCalendario {background-color:#EEEEEE;border: 1px solid #C9C9C9;border-width: 1px 1px 1px 1px;}
#calFondoMes {background-color:#C9C9C9;font-family:Arial, Helvetica, sans-serif; font-size:11px;font-weight:bold;text-align:center;}
.calFondoDias, .calFondoSemanas, .calFondoNumeroSemanas {background-color:#C9C9C9;font-family:Arial, Helvetica, sans-serif; font-size:9px; font-weight:900; }
.calDias, .calFinSemana {font-family:Arial, Helvetica, sans-serif; font-size:11px; font-weight:700;}
.calDias {color:#333333;}
.calFinSemana {color:#FF0000;}
.calDiaVacio {background-color:#FFFFFF;color:#C9C9C9;font-family:Arial, Helvetica, sans-serif; font-size:11px; font-weight:700;text-align:center;}
#paginador {background-color:#EEEEEE;height:30px;padding-top:7px;}
#paginador a:link, #paginador a:visited{background-color:#A4A4A4;color:#FFFFFF;font-family:Arial, Helvetica, sans-serif; font-size:9px; font-weight:900;text-decoration:none;padding:3px;border: 1px solid #C9C9C9;border-width: 1px 1px 1px 1px;}
#paginador a:hover, #paginador a:active{background-color:#EEEEEE;color:#333333;font-family:Arial, Helvetica, sans-serif; font-size:9px; font-weight:900;text-decoration:none;padding:3pxborder: 1px solid #C9C9C9;border-width: 1px 1px 1px 1px;}
</style>
</head>
<body bgcolor="#FFFFFF">
<?php
$URL = "OtraPagina.php";
// Si viene vacía o no es numerica
If (!isset($_GET["mes"])) {
$Mes = date("m");
} else {
$Mes = $_GET["mes"];
}
If (!isset($_GET["anyo"])) {
$ElAnyo = date("Y");
} else {
$ElAnyo = $_GET["anyo"];
}
$FechaInicio = date("m/01/Y");
$div_fecha = explode ( "/", $FechaInicio);
$FechaActual = date("m/d/Y", mktime(0, 0, 0, $Mes, "01", $ElAnyo));
$FechaLimite = date("m/d/Y", mktime(0, 0, 0, date("$div_fecha[0]")+5, 1, date("$div_fecha[2]")));
?>
<div style="background-color:#EEEEEE;padding-top:20px;padding-bottom:20px;border: 1px solid #C9C9C9;border-width: 1px 1px 1px 1px;">
<!-- Empezamos a montar el Calendario -->
<div id="ContenedorCalendario">
<table border="0" cellspacing="0px" cellpadding="0px" width="85%" align="center">
<tr>


<?php
if ($FechaActual > $FechaLimite) { // Ha progresado 6 meses (empezó 01/11/2009 termina 01/05/2010)
?>
<td id="calFondoMes">Fecha actual: <?php echo $FechaActual?> Fecha límite: <?php echo $FechaLimite?> No puede hacer una reserva con mas de 6 meses de antelación</td></tr></table>
<div id="paginador" align="center">
<a href="./calendario.php?mes=<?php echo date("m")?>&anyo=<?php echo date("Y")?>">Atr&aacute;s</a>
</div>
<?php
} else if ($FechaActual < $FechaInicio) { // Se ha manipulado la query con una fecha menor a la de inicio (empezó 01/11/2009 quiere imprimir 01/10/2009)
?>
<td id="calFondoMes">Fecha actual: <?php echo $FechaActual?> Fecha de inicio: <?php echo $FechaInicio?> No puede hacer una reserva con una fecha ya pasada</td></tr></table>
<div id="paginador" align="center">
<a href="./calendario.php?mes=<?php echo date("m")?>&anyo=<?php echo date("Y")?>">Atr&aacute;s</a>
</div>


<?php
} else {
$div_fechaactual = explode ( "/", $FechaActual);
for ($i=0; $i<=2; $i++) {
$mesAnyo = mktime ( 0, 0, 0, date("$div_fechaactual[0]") + $i, date("$div_fechaactual[1]"), date("$div_fechaactual[2]") );
$ElMes = date("m", $mesAnyo);
$ElAnyo = date("Y", $mesAnyo);
?>
<td>
<table border="0" cellspacing="1px" cellpadding="3px" width="200px" align="center" class="calFondoCalendario">
<tr align="center">
<td colspan="8">
<div id="calFondoMes">
<?php echo Nombre_Mes($ElMes)?>,&nbsp;<?php echo $ElAnyo?>
</div>
</td>
</tr>
<tr align="center">
<td rows="6"><div class="calFondoSemanas">Sem</div></td>
<td><div class="calFondoDias">Lun</div></td>
<td><div class="calFondoDias">Mar</div></td>
<td><div class="calFondoDias">Mi&eacute;</div></td>
<td><div class="calFondoDias">Jue</div></td>
<td><div class="calFondoDias">Vie</div></td>
<td><div class="calFondoDias">S&aacute;b</div></td>
<td><div class="calFondoDias">Dom</div></td>
</tr>
<?php
$PrimerDiaMes = NumeroPrimerDiaMes(1,$ElMes,$ElAnyo); // Número primer día mes
$Semana = strftime("%W", strtotime($ElMes."/1/".$ElAnyo)); // Número de semana del mes actual
$nSemanas31 = strftime("%W", strtotime("12/31/".$ElAnyo)); // Número de semanas del año
$nSemanas01 = strftime("%W", strtotime("1/1/".$ElAnyo)); // Número de semana de la primera semana del año siguiente
$DiaActual = 1;
$DiasMesSiguiente = 0;
for ($Fila = 0; $Fila<=5; $Fila++) {
?>
<tr height="20px">
<?php
// ============== Número de la Semana ==============
if($Fila == 0){
if($Semana == $nSemanas01) { // La última semana del año anterior comprende algún día del siguiente año
$Semana = $nSemanas31;
?>
<td class="calFondoNumeroSemanas"><?php echo $Semana?></td>
<?php
} else {
?>
<td class="calFondoNumeroSemanas"><?php echo $Semana?></td>
<?php
}
} else {
if($Semana >= $nSemanas31) { // Primera semana del año
$Semana = 1;
} else {
$Semana +=1;
}
?>
<td class="calFondoNumeroSemanas"><?php echo $Semana?></td>
<?php
}
// ============== Fin Número de la Semana ==============
for ($Columna = 0; $Columna <=6; $Columna++) {
if (($Fila == 0) && ($Columna < $PrimerDiaMes)) { // No hay día
$UltimoDiaMesAnterior = UltimoDia(($ElMes-1),$ElAnyo);
$DiasMesAnterior = (($UltimoDiaMesAnterior - ($PrimerDiaMes-1)) + $Columna);
?>
<td class="calDiaVacio"><?php echo $DiasMesAnterior?></td>
<?php
} else if ($DiaActual > UltimoDia($ElMes, $ElAnyo)) { // No hay día
$DiasMesSiguiente += 1;
?>
<td class="calDiaVacio"><?php echo $DiasMesSiguiente?></td>
<?
}else {
if (($Columna == 5) || ($Columna == 6)) { // es fin de semana
?>
<td class="calFinSemana">
<?php
} else {
?>
<td class="calDias">
<?php
}
?>
<p id="calDias_<?php echo $DiaActual?>/<?php echo $ElMes?>/<?php echo $ElAnyo?>"><?php echo $DiaActual?></p>
</td>
<div id="Dia_<?php echo $DiaActual?>/<?php echo $ElMes?>/<?php echo $ElAnyo?>"></div>
<?php
$DiaActual += 1;
}
} //Columna
?>
</tr>
<?php
} // Fila
?>
</table></td>
<?php
} // i
?>
</tr>
</table>
</div>
<!-- Fin Calendario -->


<!-- Paginador -->
<div id="paginador" align="center">
<?php
$sumames_fechaActual = explode ( "/", $FechaActual);
$masmeses = mktime (0, 0, 0, date("$sumames_fechaActual[0]")+1, 1, date("$sumames_fechaActual[2]"));
$restames_fechaActual = explode ( "/", $FechaActual);
$menosmeses = mktime (0, 0, 0, date("$restames_fechaActual[0]")-1, 1, date("$restames_fechaActual[2]"));
?>
<a href="./calendario.php?mes=<?php echo date("m", $menosmeses)?>&anyo=<?php echo date("Y", $menosmeses)?>">Anterior1</a>
<a href="./calendario.php?mes=<?php echo date("m", $masmeses)?>&anyo=<?php echo date("Y", $masmeses)?>">Siguiente1</a>
</div>
<?php
}
?>
</div>
<!-- Fin Paginador -->
</body>
</html>

<?php
//====================== Funciones ===========================
function Nombre_Mes($ElMes) {
switch ($ElMes) {
case 1;
echo "Enero";
break;
case 2;
echo "Febrero";
break;
case 3;
echo "Marzo";
break;
case 4;
echo "Abril";
break;
case 5;
echo "Mayo";
break;
case 6;
echo "Junio";
break;
case 7;
echo "Julio";
break;
case 8;
echo "Agosto";
break;
case 9;
echo "Septiembre";
break;
case 10;
echo "Octubre";
break;
case 11;
echo "Noviembre";
break;
case 12;
echo "Diciembre";
break;
default;
echo "ERROR!";
}
}

function UltimoDia($ElMes, $ElAnyo) {
switch ($ElMes) {
case 01;
case 03;
case 05;
case 07;
case 08;
case 10;
case 12;
$FinMes = 31;
return $FinMes;
break;
case 04;
case 06;
case 09;
case 11;
$FinMes = 30;
return $FinMes;
break;
case 02;
If (checkdate($ElAnyo,$ElMes,29)) { $FinMes = 29; return $FinMes; }else{ $FinMes = 28; return $FinMes;}
break;
default;
$FinMes = 0;
return $FinMes;
}
}


function NumeroPrimerDiaMes($dia,$mes,$anyo){
$numerodia = date('w', mktime(0,0,0,$mes,$dia,$anyo));
if ($numerodia == 0)
$numerodia = 6;
else
$numerodia--;
return $numerodia;
}
?>
Gracias
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #4 (permalink)  
Antiguo 17/11/2009, 07:15
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Condicional con fechas

ufff no lei el codigo pq es demaciado..
pero hace lo que te dijeron de mktime..
Código php:
Ver original
  1. $fecha = date("d-m-Y");
  2. list($dia, $mes, $anyo) = explode("-",$fecha);
  3. $fecha = mktime(0,0,0,$mes,$dia,$anyo);

esas si son comparables matematicamente :B

saludos!
__________________
More about me...
~ @rhyudek1
~ Github
  #5 (permalink)  
Antiguo 18/11/2009, 06:29
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Condicional con fechas

Muchas gracias, me ayudó mucho vuestras respuestas
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
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:36.