Foros del Web » Programando para Internet » PHP » Zend »

Comparacion de Fechas en Zend

Estas en el tema de Comparacion de Fechas en Zend en el foro de Zend en Foros del Web. Saludos Gente del Foro. Sucede que tengo una consulta SQL implementada en zend la cual mellama 2 fechas que son una de prestamo de herramientas ...
  #1 (permalink)  
Antiguo 08/10/2011, 20:51
Avatar de danj  
Fecha de Ingreso: octubre-2011
Ubicación: Calarcho
Mensajes: 53
Antigüedad: 8 años
Puntos: 1
Información Uso de Fechas Con Zend Framework

Saludos Gente del Foro.

Sucede que tengo una consulta SQL implementada en zend la cual mellama 2 fechas que son una de prestamo de herramientas y otra de devolucion, ya que la aplicacion va dirigida a un almacen.
hasta ahii todo marcha bien, lo que sucede es que tengo que mostrar por medio de una imagen puede ser png que sea un circulo rojo y otra que sea uno verde, para que cuando la fecha este vencida me muestre el boton rojo y cuando no lo este sea el boton verde.
se que lo debo hacer con una condicion mediante un if, pero no se como comparar las fechas de manera que cuando me diga si la fecha esta vencida o no.

No se si fui lo bastante claro.

Saludos.
  #2 (permalink)  
Antiguo 08/10/2011, 21:08
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 11 años, 9 meses
Puntos: 845
Respuesta: Uso de Fechas Con Zend Framework

Tienes el componente Zend_Date para el manejo de fechas

http://framework.zend.com/manual/en/...ers.comparison.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 09/10/2011, 15:33
Avatar de danj  
Fecha de Ingreso: octubre-2011
Ubicación: Calarcho
Mensajes: 53
Antigüedad: 8 años
Puntos: 1
Información Comparacion de Fechas en Zend

Saludos.

Necesito comparar 2 fechas existentes en una base de datos, una es la fecha en que se realiza un prestamo, y la otra es la fecha en la cual se debe realizar la devolucion, de manera que el sistema me avise por medio de una imagen cuando la fecha del prestamo se encuentre vencida.

tengo esta condicion, pero pienso que le falta algo pues esta no me funciona.

Código PHP:
Ver original
  1. $fecha = new Zend_Date()
  2.                                  if ($fecha->compare(10, Zend_Date::DATE_FULL) == $c->fecha)
  3.                                  {
  4.                                     print "fecha vencida";
  5.                                  }
  6.                                  else
  7.                                  {
  8.                                     print "fecha vigente";
  9.                                  }

ademas me gustaria saber como mostrar una imagen en zend.

Saludos.
  #4 (permalink)  
Antiguo 09/10/2011, 16:58
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 11 años, 2 meses
Puntos: 416
Respuesta: Comparacion de Fechas en Zend

El primer parametro que debes pasar al metodo compare es la otra fecha con la cual vas a comparar el objeto.

Código PHP:
Ver original
  1. $fechaUno = new Zend_Date();
  2. $fechaDos = new Zend_Date();
  3. if($fechaUno->compare($fechaDos) == 0) {
  4.   //Son iguales
  5. } elseif($fechaUno->compare($fechaDos) == 1) {
  6.   //fechaUno es mas reciente
  7. } else {
  8.   //fechaDos es mas reciente
  9. }
  #5 (permalink)  
Antiguo 09/10/2011, 17:25
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 11 años, 9 meses
Puntos: 845
Respuesta: Comparacion de Fechas en Zend

danj tienes 3 temas que en realidad son lo mismo, no entiendo bien donde esta el problema, estamos hablando de cosas básicas, para comparar:

Código PHP:
Ver original
  1. echo $fechaDevolucion->isLater(Zend_Date::now()) ? 'Y' : 'N' ;

para mostrar una imagen, en cualquier vista puedes hacer algo asi:

Código HTML:
Ver original
  1. <?php if($fechaDevolucion->isLater(Zend_Date::now())) : ?>
  2.      <img src="path/icono/imagen/vencida" ... />
  3. <?php else : ?>
  4.      <img src="path/icono/imagen/ok" ... />
  5. <?php endif; ?>

aunque seria mejor un ViewHelper.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #6 (permalink)  
Antiguo 10/10/2011, 13:38
Avatar de danj  
Fecha de Ingreso: octubre-2011
Ubicación: Calarcho
Mensajes: 53
Antigüedad: 8 años
Puntos: 1
Respuesta: Comparacion de Fechas en Zend

Gracias.

pues en realidad lo que sucede es que al no obtener una respuesta que en realidad se ajustara a la necesidad que tengo, me vi obligado a preguntar nuevamente, y me di cuenta que no habia preguntado de la forma apropiada, aun asi todas las respuestas fueron de gran ayuda para desarrollar este proyecto, esa es la razon por la cual plantee varias veces el mismo tema.

despues de haber aplicado el if para llamar los campos de mi base de datos y compararlos con la fecha actual, se me presenta un error, y es que la funcion Zend_Date() me llama la hora y la fecha del sistema, y lo que yo necesito es solamente la fecha sin hora.

el codigo es el siguiente

Código PHP:
Ver original
  1. $fechaUno = new Zend_Date();
  2.         $fechaDos = new Zend_Date();
  3.         echo $fechaUno;
  4.         if($fechaUno == $rows1->fechaEstimadaDevolucion) {
  5.          echo "Son iguales";
  6.         } elseif($fechaUno >= $rows1->fechaEstimadaDevolucion) {
  7.          echo "fechaUno es mas reciente";
  8.         } else {
  9.          echo "fechaDos es mas reciente";
  10.         }

Agradesco su ayuda.

Saludos
  #7 (permalink)  
Antiguo 10/10/2011, 13:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 4 meses
Puntos: 2135
Respuesta: Comparacion de Fechas en Zend

Parece que no estas leyendo lo que te proponen, la idea es que uses los mismos objetos Zend_Date para comparar como el ejemplo que te propone @masterpuppet.

Tu estas comparando las variables como tal y eso no te va a funcionar, también para imprimir puedes formatear la fecha (ya que por defecto te devuelve la fecha en el formato del sistema).

Revisa estas dos referencias:
http://framework.zend.com/manual/en/...ate.basic.html
http://framework.zend.com/manual/en/...definedformats

Saludos.
  #8 (permalink)  
Antiguo 10/10/2011, 14:22
Avatar de danj  
Fecha de Ingreso: octubre-2011
Ubicación: Calarcho
Mensajes: 53
Antigüedad: 8 años
Puntos: 1
Respuesta: Comparacion de Fechas en Zend

Saludos.

Ya implemente lo propuesto por masterpuppet, pero sucede el siguiente error:

Fatal error: Call to a member function isLater() on a non-object in C:\zendServer\www\sagas\application\forms\Principa lForm.php on line 65

pues por lo que entiendo hay un error en la llamada del isLater, el codigo que tengo es el siguiente:

Código PHP:
Ver original
  1. <?php
  2.         $fechaDevolucion = $rows1->fechaEstimadaDevolucion;
  3.         if($fechaDevolucion->isLater(Zend_Date::now())) : ?>
  4. * * *<!--  <img src="path/icono/imagen/vencida" ... /> --> si sirve
  5. <?php else : ?>
  6. * * *<!-- <img src="path/icono/imagen/ok" ... /> --> no sirve
  7. <?php endif; } }    ?>

la primera linea de codigo me llama lo que tengo en mi base de datos, no se que errores tenga

Gracias por toda su colaboracion.
  #9 (permalink)  
Antiguo 10/10/2011, 14:43
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 11 años, 9 meses
Puntos: 845
Respuesta: Comparacion de Fechas en Zend

Lo que viene de la bbdd es un string, con ese string tienes que construir la fecha y luego comparar, algo asi:

Código PHP:
Ver original
  1. $fechaDevolucion = new Zend_Date($fecha->fechaEstimadaDevolucion);
  2. if($fechaDevolucion->isLater(Zend_Date::now(), Zend_Date::DATES)){
  3.    echo 'is Later' . PHP_EOL;
  4. } else {
  5.    echo 'is Earlier' . PHP_EOL;
  6. }
__________________
http://es.phptherightway.com/
thats us riders :)
  #10 (permalink)  
Antiguo 10/10/2011, 15:19
Avatar de danj  
Fecha de Ingreso: octubre-2011
Ubicación: Calarcho
Mensajes: 53
Antigüedad: 8 años
Puntos: 1
Respuesta: Comparacion de Fechas en Zend

Gracias.
Ahora me gustaria saber como cambiar el formato de fecha de zend al de mysql, de manera que estos dos sean compatibles, ya que sucede que zend me las muestra de la siguiente forma 10/10/2011 16:07:36 y mysql de esta otra forma 2011-10-07 00:00:00, he buscado la manera de hacerlo pero no me funciona.

Saludos.
  #11 (permalink)  
Antiguo 10/10/2011, 15:33
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 4 meses
Puntos: 2135
Respuesta: Comparacion de Fechas en Zend

Ya te puse los links, con ellos puedes ver como formatear la fecha de salida a la forma que tu gustes.

Si quieres cambiar el formato desde la BDD puedes usar la función DATE_FORMAT de MySQL.
  #12 (permalink)  
Antiguo 11/10/2011, 19:53
Avatar de danj  
Fecha de Ingreso: octubre-2011
Ubicación: Calarcho
Mensajes: 53
Antigüedad: 8 años
Puntos: 1
Respuesta: Comparacion de Fechas en Zend

Siii Gracias por todos sus aportes, al final de todo logre plasmar las imagenes que me señalan el estado de los prestamos.
coloco el codigo para personas que lleguen a necesitar algo similar en sus aplicaciones.
Si bien es algo bastante sensillo, me tomo bastante trabajo, sobre todo porque era la primera vez que utilizaba este framework.

Saludos.

Código PHP:
Ver original
  1. <?php
  2.         $tabla2 = new CuentasUsuariosModel();      
  3.         foreach ($tabla2->consultarFechas($usuario)as $rows1){ 
  4.    
  5.         /*$fechaUno = new Zend_Date();
  6.         Zend_Date::setOptions(array('format_type' => 'php'));
  7.         $date=new Zend_Date($fechaUno);
  8.         print $date->toString('Y-m-d');*/
  9.            
  10.             ?>
  11. <tr>
  12. <td><?php      
  13.                
  14.         /*$fechaUno = new Zend_Date(strtotime('11/10/2011 00:00:00'));         
  15.         $fechaUno->toString("YYYY.MM.dd HH:mm:ss");
  16.         echo $fechaUno;*/
  17.        
  18.        
  19.         $fechaDevolucion = $rows1->fechaEstimadaDevolucion;
  20.            
  21.         //echo $fechaDos->get('yyyy-mm-dd');
  22.         if(date("Y-m-d") > $fechaDevolucion) {
  23.          echo '<img src="/img/rojo.png">';
  24.         }
  25.         if(date("Y-m-d") <= $fechaDevolucion) {
  26.          echo '<img src="/img/verde.png">';
  27.         } else {
  28.          echo '<!--<img src="/img/gris.png">-->';
  29.         }   ?></td>
  #13 (permalink)  
Antiguo 11/10/2011, 21:04
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 4 meses
Puntos: 2135
Respuesta: Comparacion de Fechas en Zend

En ese código no estas usando nada del Framework de Zend, simplemente estas usando el modelo y funciones de PHP nativas (ni si quiera el template de Zend_View).

Aparte no creo que te funcione correctamente, ya que date() regresa un string, y no puedes comparar strings de esa manera como si fueran fechas.
  #14 (permalink)  
Antiguo 11/10/2011, 21:32
Avatar de danj  
Fecha de Ingreso: octubre-2011
Ubicación: Calarcho
Mensajes: 53
Antigüedad: 8 años
Puntos: 1
Respuesta: Comparacion de Fechas en Zend

Sucede que con la funcion de zend_date no me funciono ya que esta me retorna la hora y la fecha en un formato diferente al de mysql, aun convirtiendolo de formato no me funciono, es mas arriba la tengo como comentario, y yo tampoco crei que funcionara de esta forma, pero veo que valio la pena intentarlo.
de cualquier manera gracias por todos los aportes en este foro, pues sin su ayuda no hubiera logrado terminar esta parte de la aplicacion.

Saludos.

Etiquetas: comparacion, condicional, framework, mysql
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 22:50.