Diferencia De Dias Entre Dos Fechas

Buenos Dias!! Estoy comenzando a explorar este mundo de Yii, espero me sean de gran ayuda…

Tengo dos campos en mi form, fecha_inicial y fecha_culminación tipo Date en mi base de datos postgres… y necesito que al usuario elegir la fecha_culminación me calcule automaticamente el la diferencia de dias entre una fecha y otra… Le agradecia de antemano la ayuda… Ah! ambos campos usan cjuidatepicker…

Al decir automáticamente ¿te refieres exactamente a qué?

Me imagino que "automáticamente" = AJAX. Ahí no te puedo ayudar, pero con lo de las fechas yo uso lo siguiente (hay una forma más eficiente pero esta te va a servir perfecto):




public function diferenciaFechas(){

        $start_ts = strtotime($this->fecha_inicial);

        $end_ts = strtotime($this->fecha_culminacion);

        $diferencia = $end_ts - $start_ts;

        $dif_dias = round($diferencia / 86400); // En días

        $dif_horas = round($diferencia / 3600); // En horas

        ...

}



Si encontrás la solución a lo otro, ponela acá.

Saludos.

Hola Juan! cuando digo automaticamente me refiero que cuando el usuario elija la fecha de culminación refleje en un campo de texto los dias de diferencia…

Hola Migue!! Gracias por responder… probare tu codigo y te cuento…

hola estimado, me funciono a la perfeccion la funcion, muchas gracias, me gustaria saber cual es el calculo para obtener los meses entre dos fechas,

me imagino que sera algo del estilo…

$dif_meses = round($diferencia / ?????);

saludos. de antemano gracias.

El resultado de la resta nos queda expresado en la unidad de tiempo “segundos”, al dividir por 60 nos queda expresado en “minutos”, al dividir nuevamente por 60 nos queda en “horas” y al dividir por 24 nos queda en días.

$dif_meses = round($diferencia / 1,036,800); // En meses 606024*12 = 1,036,800

$dif_dias = round($diferencia / 86400); // En días 606024= 86,400

$dif_horas = round($diferencia / 3600); // En horas 60*60=3600

$dif_min = round($diferencia / 60); // En minutos 60

el resultado original sin la división se encuentra en segundos como se menciono al principio. pero ten cuidado al hacer el calculo verifica que sea correcto! eh tenido algo de problemas… por el manejo de un formato como este "2012-02-14 00:00:00"