Ir al contenido


Foto

[RESUELTO] Comparar fechas en PHP


  • Por favor identifícate para responder
7 respuestas en este tema

#1 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 13 agosto 2010 - 02:49

Saludos, trabajando en PHP



php
  1. //Arma la fecha desde
  2. $fDesde = date('m/d/Y', mktime(0,0,0,$_POST["MesDesde"], $_POST["DiasDesde"], $_POST["AyoDesde"]));
  3. //Arma la fecha hasta
  4. $fHasta = date('m/d/Y', mktime(0,0,0,$_POST["MesHasta"], $_POST["DiasHasta"], $_POST["AyoHasta"]));



Allí me deja dos variables con la fecha: $fDesde y $fHasta

Luego hago una comparación:



php
  1. //Valida que la fecha Hasta sea mayor a la desde
  2. if($fHasta < $fDesde){
  3.   error("La fecha de terminacion ".$fHasta." es menor a la fecha de inicio ".$fDesde.". <br> <a href=\"javascript:window.history.back();\">Volver a la pagina anterior.</a>");
  4.   exit;
  5. }



Cuando el dia hasta es mayor al dia desde todo va bien  (y) el asunto es cuando es al contrario, me da el error:

La fecha de terminacion 01/01/2010 es menor a la fecha de inicio 08/13/2010.
Volver a la pagina anterior.


Eso me hace suponer que hay otra forma de comparar fechas.  Alguien sabe del tema??
  • 0

#2 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 13 agosto 2010 - 02:56

Hola
De esto no se, pero no es al reves:

if($fHasta > $fDesde){

Saludos

  • 0

#3 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 13 agosto 2010 - 03:12

Hola
De esto no se, pero no es al reves:

if($fHasta > $fDesde){

Saludos


Si lo coloco asi me va a dar el error cuando la fecha hasta sea mayor a la desde, que es el escenario correcto
  • 0

#4 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 13 agosto 2010 - 03:14

Hola
Yo cuando hago las comparaciones de fecha lo pongo asi:


delphi
  1. if($fHasta <= $fDesde){


Con el igual.
No se si servira en php.
Saludos
  • 0

#5 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 13 agosto 2010 - 03:20

Hola
Aunque pensandolo bien; es logico.
La sentencia que ejecutas dice que si Hasta es mayor que Desde.
Osea que si Hasta (mayor) es posterior a Desde (menor).
El error debe darlo ya que el dato Hasta tiene que ser mas alto que el desde.
No se, Digo....
Saludos
  • 0

#6 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 13 agosto 2010 - 03:38

Al contrario amigo, Hasta debería ser mayor que Desde de no ser así debería dar error
  • 0

#7 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 13 agosto 2010 - 03:43

Y no será más fácil utilizar la fecha juliana para estos menesteres ?



php
  1.   //Arma la fecha desde
  2.   $fDesde = date('m/d/Y', mktime(0,0,0,$_POST["MesDesde"], $_POST["DiasDesde"], $_POST["AyoDesde"]));
  3.  
  4.   //Arma la fecha hasta
  5.   $fHasta = date('m/d/Y', mktime(0,0,0,$_POST["MesHasta"], $_POST["DiasHasta"], $_POST["AyoHasta"]));
  6.  
  7.   // CDonvertimos klas fechas a Juliano
  8.   $diasDesdeJuliano = gregoriantojd($_POST["MesDesde"], $_POST["DiasDesde"], $_POST["AyoDesde"]);
  9.   $diasHastaJuliano = gregoriantojd($_POST["MesHasta"], $_POST["DiasHasta"], $_POST["AyoHasta"]);
  10.  
  11.   // Comparamos las fechas julianas
  12.   if ( ($diasHastaJuliano - $diasDesdeJuliano) < 0 ) {
  13.     error("La fecha de terminacion ".$fHasta." es menor a la fecha de inicio ".$fDesde.
  14.           "  <br> <a href=\"javascript:window.history.back();\">Volver a la pagina anterior.</a>");
  15.   }



Salud OS

  • 0

#8 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 14 agosto 2010 - 07:50

Eso era todo, en conclusión para comparar fechas hay que llevarlas a julianas. Doy el tema como resuelto.  <:o)

Muchas Gracias
  • 0




IP.Board spam blocked by CleanTalk.