Foros del Web » Programando para Internet » PHP »

Comparar 2 fechas?

Estas en el tema de Comparar 2 fechas? en el foro de PHP en Foros del Web. Bueno, estoy creando un portal y el usuario cuando se registra pone la fecha de su cumpleaños, pongamos que pone 1900-03-07 como hago para que ...
  #1 (permalink)  
Antiguo 07/03/2010, 04:45
 
Fecha de Ingreso: enero-2009
Ubicación: España
Mensajes: 786
Antigüedad: 15 años, 2 meses
Puntos: 9
Comparar 2 fechas?

Bueno, estoy creando un portal y el usuario cuando se registra pone la fecha de su cumpleaños, pongamos que pone 1900-03-07 como hago para que si llega esa fecha haga una funcion?

Porque si comparo esa fecha con time() nunca va a ser igual:

if (1900-03-07 == 2010-03-07){
echo "Es válido";
}else{
echo "No es válido";
}

aunque tengan el mes y dia iguales como el año no es igual no lo dara por valido, entonces como hago?
  #2 (permalink)  
Antiguo 07/03/2010, 07:55
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: Comparar 2 fechas?

Y tenes varias opciones... Si guardas la fecha en una base de datos MySQL podrias usar la clausula DATE_FORMAT() y traer por separado el dia, elmes y el año y comparar con la fecha actual.

Sino usa explode().

Un saludo.
__________________
HV Studio
Diseño y desarrollo web
  #3 (permalink)  
Antiguo 07/03/2010, 08:29
Avatar de Mahishasura  
Fecha de Ingreso: enero-2010
Ubicación: En las profundidades del cosmos
Mensajes: 58
Antigüedad: 14 años, 2 meses
Puntos: 4
Respuesta: Comparar 2 fechas?

Aquí escribí el código, espero que te sirva.
Código PHP:
<?
$fecha_actual
=date("Y-m-d");
$fecha_cumple="1986-03-07";

$fecha_actualArray=explode("-",$fecha_actual);
$mes_actual=$fecha_actualArray[1];
$dia_actual=$fecha_actualArray[2];

$fecha_cumpleArray=explode("-",$fecha_cumple);
$mes_cumple=$fecha_cumpleArray[1];
$dia_cumple=$fecha_cumpleArray[2];

//Comparación de mes y día
if($mes_cumple == $mes_actual && $dia_cumple == $dia_actual){
echo 
"Felicidades, estás de cumpleaños"; }
else {
echo 
"Lo lamento, aún falta para tu cumple :D"; }
?>
Saludos
  #4 (permalink)  
Antiguo 08/03/2010, 07:57
 
Fecha de Ingreso: enero-2009
Ubicación: España
Mensajes: 786
Antigüedad: 15 años, 2 meses
Puntos: 9
Respuesta: Comparar 2 fechas?

muy bueno, gracias!
  #5 (permalink)  
Antiguo 09/03/2010, 08:49
 
Fecha de Ingreso: enero-2009
Ubicación: España
Mensajes: 786
Antigüedad: 15 años, 2 meses
Puntos: 9
Respuesta: Comparar 2 fechas?

que está mal? porque siempre me da 100:


Código PHP:
$fechacumple ''date('Y-m-d'$cumple) ."\n";
$fecha_actual=date("Y-m-d");
$fecha_cumple="$fechacumple";

$fecha_actualArray=explode("-",$fecha_actual);
$mes_actual=$fecha_actualArray[1];
$dia_actual=$fecha_actualArray[2];

$fecha_cumpleArray=explode("-",$fecha_cumple);
$mes_cumple=$fecha_cumpleArray[1];
$dia_cumple=$fecha_cumpleArray[2];

//Comparación de mes y día
if($mes_cumple == $mes_actual && $dia_cumple == $dia_actual){
$puntosTotal 200
}
else {
$puntosTotal 100
}

  #6 (permalink)  
Antiguo 09/03/2010, 08:56
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Comparar 2 fechas?

por que no estas de cumpleaños ?
__________________
More about me...
~ @rhyudek1
~ Github
  #7 (permalink)  
Antiguo 09/03/2010, 09:08
 
Fecha de Ingreso: enero-2009
Ubicación: España
Mensajes: 786
Antigüedad: 15 años, 2 meses
Puntos: 9
Respuesta: Comparar 2 fechas?

me registre con la fecha de hoy
  #8 (permalink)  
Antiguo 09/03/2010, 09:14
 
Fecha de Ingreso: enero-2009
Ubicación: España
Mensajes: 786
Antigüedad: 15 años, 2 meses
Puntos: 9
Respuesta: Comparar 2 fechas?

Es problema del register:

Código PHP:
<select name="cncumpledia" class="field"><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="09">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option><option value="21">21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option><option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option><option value="29">29</option><option value="30">30</option><option value="31">31</option></select

<
select name="cncumplemes" class="field"><option value="1">1</option><option value="2">2</option><option value="03">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option></select>

<
select name="cncumpleaño" class="field"><option value="1980">1980</option><option value="1981">1981</option><option value="1982">1982</option><option value="1983">1983</option><option value="1984">1984</option><option value="1985">1985</option><option value="1986">1986</option><option value="1987">1987</option><option value="1988">1988</option><option value="1989">1989</option><option value="1990">1990</option><option value="1991">1991</option><option value="1992">1992</option><option value="1993">1993</option><option value="1994">1994</option><option value="1995">1995</option><option value="1996">1996</option><option value="1997">1997</option><option value="1998">1998</option><option value="1999">1999</option><option value="2000">2000</option><option value="2001">2001</option><option value="2002">2002</option><option value="2003">2003</option><option value="2004">2004</option><option value="2005">2005</option><option value="2006">2006</option><option value="2007">2007</option><option value="2008">2008</option><option value="2009">2009</option><option value="2010">2010</option></select


Cuando me logueo me sale que mi cumpleaños es el 1969-12-31

y el realidad puse la fecha de hoy, prove a poner 0 delande del numero de mes y dia en el register pero sigue pasando igual
  #9 (permalink)  
Antiguo 09/03/2010, 09:15
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Comparar 2 fechas?

antes de esta linea
if($mes_cumple == $mes_actual && $dia_cumple == $dia_actual){

pone

echo "$mes_cumple == $mes_actual && $dia_cumple == $dia_actual";

y ahi ves si estan cumpliendose las condiciones o hay alguna falla x3
__________________
More about me...
~ @rhyudek1
~ Github
  #10 (permalink)  
Antiguo 09/03/2010, 09:16
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Comparar 2 fechas?

cuando insertes la fecha en sql ponela en el formato que uses en la base de datos!
__________________
More about me...
~ @rhyudek1
~ Github
  #11 (permalink)  
Antiguo 09/03/2010, 09:34
 
Fecha de Ingreso: enero-2009
Ubicación: España
Mensajes: 786
Antigüedad: 15 años, 2 meses
Puntos: 9
Respuesta: Comparar 2 fechas?

no es via base de datos, es via archivos txt necesito que sea asi, creo que el problema está aquí:
$cncumple= ''. strtotime("$cncumpleaño-$cncumplemes-$cncumpledia") ."";


puede ser que cuando se colocan los numeros se esten restando y por eso la fecha se registre mal?
  #12 (permalink)  
Antiguo 09/03/2010, 09:42
Avatar de Mahishasura  
Fecha de Ingreso: enero-2010
Ubicación: En las profundidades del cosmos
Mensajes: 58
Antigüedad: 14 años, 2 meses
Puntos: 4
Respuesta: Comparar 2 fechas?

Código PHP:
$fecha_actual=date("Y-m-d");
$fecha_cumple=date('Y-m-d'$cumple); 
Cambié las primeras 3 líneas por el código que puse. Prueba y nos avisas, vale ?
Saludos
  #13 (permalink)  
Antiguo 09/03/2010, 09:43
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Comparar 2 fechas?

strtotime te trasnforma a segundos la fecha? es eso lo que quieres guardar en $cncumple ?
__________________
More about me...
~ @rhyudek1
~ Github
  #14 (permalink)  
Antiguo 09/03/2010, 09:48
Avatar de Mahishasura  
Fecha de Ingreso: enero-2010
Ubicación: En las profundidades del cosmos
Mensajes: 58
Antigüedad: 14 años, 2 meses
Puntos: 4
Respuesta: Comparar 2 fechas?

Cita:
Iniciado por SeaPirates Ver Mensaje
no es via base de datos, es via archivos txt necesito que sea asi, creo que el problema está aquí:
$cncumple= ''. strtotime("$cncumpleaño-$cncumplemes-$cncumpledia") ."";
puede ser que cuando se colocan los numeros se esten restando y por eso la fecha se registre mal?
strtotime devuelve tiempo UNIX, osea, un número entero (también sirve para comparar fechas, en casos complejos), prueba con esto:
Código PHP:
$cncumpledate("Y-m-d"strtotime("$cncumpleaño-$cncumplemes-$cncumpledia")); 
  #15 (permalink)  
Antiguo 09/03/2010, 09:56
 
Fecha de Ingreso: enero-2009
Ubicación: España
Mensajes: 786
Antigüedad: 15 años, 2 meses
Puntos: 9
Respuesta: Comparar 2 fechas?

ya puse el codigo de mahishasura, pero igualmente sigue registrando la fecha mal, miren:

register.php




<?
if($registrar) {
function quitar($texto) {
$texto = trim($texto) ;
$texto = htmlspecialchars($texto) ;
return $texto ;
}
$cnnick = quitar($cnnick) ;
$cnemail= quitar($cnemail) ;
// Comprobar que el usuario existe en la base de datos
if(!file_exists("usuarios/")) { mkdir("usuarios/", 0777); }
if(file_exists("usuarios/$cnnick.php")) {
echo "<div id=infobox-center class=red>
<div id=top></div>
<div id=text>Ya existe un usuario con ese nick o email en la base de datos. Haz

click <a href=javascript:history.back()>aquí</a> para regresar.</div>
<div id=bottom></div>
</div>" ;
}
else {
$cnfecha = time() ;
$cncontrasena = md5($cncontrasena) ;
$cnip = $REMOTE_ADDR ;
$cncumple= date("Y-m-d", strtotime("$cncumpleaño-$cncumplemes-$cncumpledia"));

$nuevo .= "<"."?\n";
$nuevo .="\$nick = \"$cnnick\";\n";
$nuevo .="\$contrasena = \"$cncontrasena\";\n";
$nuevo .="\$email = \"$cnemail\";\n";
$nuevo .="\$cumple = \"$cncumple\";\n";
$nuevo .="\$fecha = \"$cnfecha\";\n";
$nuevo .="\$ip = \"$cnip\";\n";
$nuevo .="\$sexo = \"\";\n";
$nuevo .="\$pais = \"es\";\n";
$nuevo .="\$edad = \"\";\n";
$nuevo .="\$descripcion = \"\";\n";
$nuevo .="\$puntos = \"0\";\n";
$nuevo .="\$lastConect = \"0000000000\";\n";
$nuevo .="\$nivel = \"0\";\n";
$nuevo .="\$color = \"gray\";\n";
$nuevo .="\$premium = \"1\";\n";
$nuevo .="\$fechapremium = \"\";\n";
$nuevo .="\$diaspremium = \"7\";\n";
$nuevo .="\$avatar = \"/images/noAvatar.jpg\";\n";
$nuevo .="\$transacciones = \"No hay ninguna transaccion.\";\n";
$nuevo .="\$fechatrans = \"".time()."\";\n";
$nuevo .="\$estado = \"Feliz\";\n";
$nuevo .="\$baneado = \"0\";\n";
$nuevo .="\$razonbaneo = \"\";\n";
$nuevo .="\$expirabaneo = \"\";\n";
$nuevo .="\$aviso = \"0\";\n";
$nuevo .="\$mensajeaviso = \"\";\n";
$nuevo .="\$colornick = \"gray\";\n";
$nuevo .="\$puntosbanco = \"0\";\n";
$nuevo .="\$amigos = \"\";\n";
$nuevo .="\$options = \"\";\n";
$nuevo .= "?".">";

$crea = fopen("usuarios/$cnnick.php","w");
chmod("usuarios/$cnnick.php", 0777);
fputs($crea,$nuevo);
fclose($crea);
echo "<div id=infobox-center class=green>
<div id=top></div>
<div id=text>¡Bienvenid@ a GameShoot <strong>".$_POST["cnnick"]."</strong>!

Te has registrado exitosamente.<br>¿A qué esperas para iniciar sesión?</div>
<div id=bottom></div>
</div>";
}

?>
  #16 (permalink)  
Antiguo 09/03/2010, 10:32
Avatar de Mahishasura  
Fecha de Ingreso: enero-2010
Ubicación: En las profundidades del cosmos
Mensajes: 58
Antigüedad: 14 años, 2 meses
Puntos: 4
Respuesta: Comparar 2 fechas?

No sé que valores tienen almacenadas las variables $cncumpeaño mes y dia.
Intenta reemplazar la "ñ" por una "n", aunque no creo que eso solucione tu problema, probé con esto (ya que no sé si tus variables están bien definidas y bien almacenadas) y funciona.
Código PHP:
$cncumpleano="2010";
$cncumplemes="03";
$cncumpledia="09";
echo 
date("Y-m-d"strtotime("$cncumpleano-$cncumplemes-$cncumpledia"));
//Devuelve 2010-03-09 
  #17 (permalink)  
Antiguo 09/03/2010, 11:13
 
Fecha de Ingreso: enero-2009
Ubicación: España
Mensajes: 786
Antigüedad: 15 años, 2 meses
Puntos: 9
Respuesta: Comparar 2 fechas?

Ya lo solucioné, el problema era que cuando el usuario se logueava, faltaba una variable, entonces la borraba

Última edición por SeaPirates; 09/03/2010 a las 11:31

Etiquetas: comparar, fechas
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 23:20.