PHP - Dias diferencia

 
Vista:
sin imagen de perfil
Val: 34
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

Dias diferencia

Publicado por siREZ (22 intervenciones) el 02/01/2018 19:38:21
Cordial saludo.
Estoy calculando los días diferencia entre dos fecha.
trabajó muy bien hasta que llego el 2018
no funciona adecuadamente cuando el año es diferente.
mi código es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$fec=mysql_result($iquery,$irow,(fecha));
$ven=mysql_result($iquery,$irow,(vence));
$fecha1 = $fec;
$fecha2 = date("Y-m-d");
$fecha2a = strtotime($fecha2,time());
$fecha1a = strtotime($fecha1,time());
$ano1 = substr($fecha2,0,4);
$mes2 = substr($fecha2,5,2);
$dia2 = substr($fecha2,08,2);
$ano2 = substr($ven,0,4);
$mes1 = substr($ven,5,2);
$dia1 = substr($ven,08,2);
$timestamp1 = mktime(0,0,0,$mes1,$dia1,$ano1);
$timestamp2 = mktime(4,12,0,$mes2,$dia2,$ano2);
$segundos_diferencia = $timestamp1 - $timestamp2;
$dias_diferencia = $segundos_diferencia / (60 * 60 * 24);
$dias_diferencia = abs($dias_diferencia);
$dias_diferencia = floor($dias_diferencia);
$dias_diferencia = round($dias_diferencia/30,0);

Alguien me puede ayudar?

Gracias

siREZ
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de abzerox
Val: 575
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Dias diferencia

Publicado por abzerox (157 intervenciones) el 03/01/2018 00:44:02
Hola siRez, te dejo una pequeña función que te puede servir, modificala a tu gusto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
 
/**
 * compare_dates
 * Compara dos fechas y devuelve la diferencia en dias.
 * Recibie dos fechas con formato DD-MM-AAAA.
 * Retorna `false` en caso de que alguna de las fechas no sea valida. De lo contrario retorna un `int`.
 * @param  string $fd first date
 * @param  string $sd second date
 * @return false|int
 */
function compare_dates($fd, $sd) {
    list($first_date_day, $first_date_month, $first_date_year) = explode('-', $fd);
    list($second_date_day, $second_date_month, $second_date_year) = explode('-', $sd);
    $first_date_julian  = gregoriantojd($first_date_month, $first_date_day, $first_date_year);
    $second_date_julian = gregoriantojd($second_date_month, $second_date_day, $second_date_year);
 
     if (!checkdate($first_date_month, $first_date_day, $first_date_year) ||
	!checkdate($second_date_month, $second_date_day, $second_date_year)) {
        return false;
      }
      return abs($first_date_julian - $second_date_julian);
}

En tu caso, la usarias así:

1
2
3
4
5
$fecha1 = $dia1.'-'.$mes1.'-'.$anio1;
$fecha2 = $dia2.'-'.$mes2.'-'.$anio2;
$diferenecia = compare_dates($fecha1, $fecha2);
 
echo 'Diferencia de días: ' . $diferencia;

Nos comentas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar