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

fechas, clase datetime, diferencia entre fechas

Estas en el tema de fechas, clase datetime, diferencia entre fechas en el foro de Zend en Foros del Web. Hola He visto que PHP tiene una clase llamada datetime para tratar fechas entre algunas funciones tiene una en particular que me interesa que es ...
  #1 (permalink)  
Antiguo 09/02/2011, 17:26
 
Fecha de Ingreso: agosto-2008
Mensajes: 271
Antigüedad: 15 años, 8 meses
Puntos: 2
fechas, clase datetime, diferencia entre fechas

Hola

He visto que PHP tiene una clase llamada datetime para tratar fechas entre algunas funciones tiene una en particular que me interesa que es la que calcula la diferencia entre 2 fechas, lo he hecho y no hay caso de que funcione, otra cosa Zend Framework no tiene alguna clase que haga este tipo de cosas.

Saludos

Pongo el codigo para que vean

Código PHP:
Ver original
  1. public function calculaEdad($fecha_nacimiento)
  2.      {
  3.         date_default_timezone_set('Chile/Continental');
  4.         $fecNac = new DateTime($this->formatDateToMySQL($fecha_nacimiento));
  5.         var_dump($fecNac);
  6.         exit;
  7.         $hoy    = new DateTime();
  8.         $edad   = $fecNac->diff($hoy);
  9.         $this->setEdad($edad->format('%y'));
  10.         return $this;
  11.      }

IMPRIMO OBJETO
object(DateTime)#51 (0) { }

ERROR
Call to undefined method DateTime::diff()
  #2 (permalink)  
Antiguo 09/02/2011, 17:47
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: fechas, clase datetime, diferencia entre fechas

Verifica la versión que indica PHP y la que tu tienes.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 09/02/2011, 17:51
 
Fecha de Ingreso: agosto-2008
Mensajes: 271
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: fechas, clase datetime, diferencia entre fechas

Lo que indica la pagina -> (PHP 5 >= 5.3.0)
Lo que tengo instalado ->PHP 5.2.9.2
  #4 (permalink)  
Antiguo 09/02/2011, 18:03
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: fechas, clase datetime, diferencia entre fechas

Hay que navegar mas por la documentación, Zend_Date.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #5 (permalink)  
Antiguo 09/02/2011, 18:13
 
Fecha de Ingreso: octubre-2009
Mensajes: 240
Antigüedad: 14 años, 6 meses
Puntos: 6
Respuesta: fechas, clase datetime, diferencia entre fechas

Fernis, ademas de la solución que te dio masterpuppet, te dejo una clase que hace lo mismo y funciona bien.
Código PHP:
Ver original
  1. <?php class PersonaEdad
  2. {
  3.     private $_fechaNacimiento;
  4.    
  5.     public function __construct($fechaNacimiento)
  6.     {
  7.         $this->_fechaNacimiento = $fechaNacimiento;
  8.         }
  9.         public function decirEdad()
  10.         {
  11.             return $this->_calcularEdad();
  12.         }
  13.         private function _calcularEdad()
  14.         {
  15.         $diaActual = date('d');
  16.         $mesActual= date('n');
  17.         $anioActual = date('Y');
  18.         list($dia, $mes, $anio) = explode("/", $this->_fechaNacimiento);
  19.         // si el mes es el mismo pero el dia inferior aun  
  20.         // no ha cumplido años, le quitaremos un año al actual
  21.  
  22.         if (($mes == $mesActual) && ($dia > $diaActual))
  23.             {
  24.             $anioActual = $anioActual - 1;
  25.  
  26.             }
  27.             // si el mes es superior al actual tampoco habra
  28.             // cumplido años, por eso le quitamos un año al actual
  29.             if ($mes > $mesActual)
  30.                 {
  31.                 $anioActual = $anioActual - 1;
  32.  
  33.                 }
  34.             // ya no habria mas condiciones, ahora simplemente
  35.             // restamos los años y mostramos el resultado como su edad
  36.             $edad = $anioActual - $anio;
  37.             return $edad;
  38.  
  39.             }
  40.  
  41.  
  42.  
  43.     }
  44.  
  45. //modo de uso.
  46.     $persona = new PersonaEdad('16/11/1990');
  47.     echo $persona->decirEdad();

Etiquetas: clase, datetime, diferencia, 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 08:01.