ayuda con fechas

18 views
Skip to first unread message

sefsinalas

unread,
Mar 5, 2010, 11:21:38 AM3/5/10
to KumbiaPHP Framework
buenas...tengo una pregunta que no es de kumbiaphp sino mas bien de
php. Don google no me da la respuesta ni yo tampoco la puedo sacar.
basicamente yo tengo 2 fechas referidas a una suma y resta de la fecha
actual.

//me entrega la fecha que fue hace 5 dias desde la fecha actual
$diasAntes=date('Y-m-d',time()-(5*24*60*60));
//me entrega la fecha que sera dentro de 5 dias desde la fecha actual
$diasDespues=date('Y-m-d',time()+(5*24*60*60));

Ahora...tengo la fecha de nacimiento de una persona que saco desde la
base de datos asi:
$fecNac=$cliente->fecNac;

Todas las fechas tienen el formato YYYY-MM-DD.
Lo que yo quiero es simplemente saber si estamos entre las fechas de
cumpleaños de una persona. Es decir:
si por ejemplo:
$diasAntes= 2010-02-28;
$diasDespues=2010-03-10;
$fecNac=1985-03-07;

Quiero saber como seria el if o funcion pasa saber eso. Se entiende?
Espero que me puedan ayudar porque mis cesos no me quieren ayudar :(

Guillermo Ordinola

unread,
Mar 5, 2010, 11:55:03 AM3/5/10
to kum...@googlegroups.com
Hola,
 
Primero quitale el año a la fecha dale formato DD-MM, despues usa:
 
mysql> SELECT 'b' BETWEEN 'a' AND 'c';
en esta web encontraras mas info:
 
espero te sirva.
--
Atte,
Ing. Guillermo Ordinola
Cel: 994734181
Nextel: 144*2855

--
Viva KumbiaPHP Framework!
 http://www.kumbiaphp.com/
 Ha recibido este mensaje porque está suscrito a Grupo "KumbiaPHP Framework" de Grupos de Google.
 Para obtener más opciones, visita este grupo en http://groups.google.com/group/kumbia?hl=es.




Iván Meléndez

unread,
Mar 6, 2010, 7:58:40 PM3/6/10
to kum...@googlegroups.com
Yo utilizaria lo siguiente:

Haria una consulta con un intervalo de tiempo a la fecha de nacimiento
Ejemplo:


WHERE ....
//añado un intervalo de 5 dias
AND DATE_ADD(CURDATE(),INTERVAL 5 DAY) >= '$fecha'
//resto un intervalo de 5 dias
AND DATE_SUB(CURDATE(),INTERVAL 5 DAY) <= '$fecha'


Espero que te sirva de ayuda


Iván Meléndez

unread,
Mar 6, 2010, 8:02:04 PM3/6/10
to kum...@googlegroups.com

José Diaz

unread,
Mar 7, 2010, 9:27:38 PM3/7/10
to kum...@googlegroups.com
Hola!

No se si ya solventaste con las ejemplificaciones aportadas, yo vi hace un tiempo una practica de Enrique Place de un libro (curso realmente) pago del cual ofrece a ver gratuitamente los dos primeros capitulos de PHP5-POO:

http://surforce.com/productos.php --> paginas: 60-61

Este es el codigo, y el cual funciona bien:

<?php
    class Persona
    {
        private $fechaNac;
       
        public function __construct($fechaNac)
        {
            $this->_fechaNac = $fechaNac;
        }
        public function decirEdad()
        {
            return $this->_calcularEdad();
        }
        private function _calcularEdad()
        {
            $diaActual = date(j);
            $mesActual = date(n);
            $anioActual = date(Y);
           
            list($dia, $mes, $anio) = explode("/", $this->_fechaNac);
           
            // si el mes es el mismo pero el dia inferior aun
            // no ha cumplido anios, le quitamos un anio al actual
           
            if (($mes == $mesActual) && ($dia > $diaActual)) {
                $anioActual = $anioActual - 1;
            }
           
            // si el mes es superior al actual tampoco habra
            // cumplido el anios, por eso le quitamos aun anio al actual
            if ($mes > $mesActual){
                $anioActual = $anioActual - 1;
            }
           
            // ya no habria mas condiciones, ahora simplemente
            // restamos los anios y mostramos el resultado como su edad
            $edad = $anioActual - $anio;
           
            return $edad;
        }
    }
    $persona = new Persona('8/3/1977');
    echo $persona->decirEdad();
?>

Saludos.

El 6 de marzo de 2010 20:32, Iván Meléndez <argo...@gmail.com> escribió:

sefsinalas

unread,
Mar 8, 2010, 8:08:25 PM3/8/10
to KumbiaPHP Framework
Gracias a todos...No me convencian ninguna de sus soluciones pero
igual me sirvieron para desbloquear el cerebro :) gracias por la
ayuda, solucione mi probleme creando la siguiente funcion

public function esCumple($identificador){
/*
*Obtengo los valores de diasAntes y diasDespues, valores int
*/
$diasAntes=Load::model('opciones')->find_first("conditions:
nombre='fecNac_antes'")->valor;
$diasDespues=Load::model('opciones')->find_first("conditions:
nombre='fecNac_despues'")->valor;
$cliente= $this->find_first("conditions: identificador=
$identificador");
$fecNac=$cliente->fecNac;
$ano=date('Y',time());
$cumple=$ano."-".substr($fecNac,5,2)."-".substr($fecNac,8,2);
/*
*Calculo las fechas sumando los valores obtenidos a la fecha
actual
*/
$diasAntes=date('Y-m-d',time()-($diasAntes*24*60*60));
$diasDespues=date('Y-m-d',time()+($diasDespues*24*60*60));
/*
*devuelve true si esta cerca de la fecha de su cumple
*/
if(strtotime($cumple)>=strtotime($diasAntes) &&
strtotime($cumple)<=strtotime($diasDespues)){
return true;
}else{
return false;
}
}

Reply all
Reply to author
Forward
0 new messages