Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: SrTrp en 15 Diciembre 2018, 04:13 am



Título: No me dice la diferencia de horas entre una fecha y otra
Publicado por: SrTrp en 15 Diciembre 2018, 04:13 am
Tengo 2 fechas unix pero quiero encontrar la diferencia entre horas de cada una pero no me da.
quiero obtener cuantas horas faltan para la fecha $ft pero me marca que faltan 0.
este es mi codigo
Código
  1. $ft=strtotime($aux);//la variable aux es un string con una fecha unix
  2.              $ft= new DateTime($ft);
  3.  
  4.              $ac= new DateTime("now");
  5.              $intervalo = $ac->diff($ft);
  6. echo $intervalo->format(' %H horas');
  7.  


Título: Re: No me dice la diferencia de horas entre una fecha y otra
Publicado por: EdePC en 15 Diciembre 2018, 05:51 am
Saludos,

- Si estás trabajando directamente con fechas Unix, lo más conveniente es:

Código
  1. <?php
  2.  
  3.  $f1 = time() - 3600; // Fecha/Hora actual Unix - 1 hora
  4.  $f2 = time();        // Fecha/Hora actual Unix
  5.  
  6.  $f1f = date("Y-m-d h:i:s", $f1); // Formateando la Fecha/Hora
  7.  $f2f = date("Y-m-d h:i:s", $f2); // a un formato entendible
  8.  
  9.  echo "\$f1 = $f1 ($f1f) <br>"; // Mostrando el formato Unix y
  10.  echo "\$f2 = $f2 ($f2f) <br>"; // el formato entendible
  11.  
  12.  $intervalo = ($f2 - $f1) / 3600; // Calcula la diferncia en horas
  13.  
  14.  echo "Diferencia = $intervalo horas"; // Muestra la diferencia
  15.  
  16.  // El formato Unix muestra la fecha/hora en segundos, por esto
  17.  // se puede hacer calculos matematicos sencillos para obtener
  18.  // dias (/86400 seg), horas (/3600 seg), minutos (/60 seg), etc.
  19.  
  20. ?>

Código:
$f1 = 1544845397 (2018-12-15 03:43:17)
$f2 = 1544848997 (2018-12-15 04:43:17)
Diferencia = 1 horas


Título: Re: No me dice la diferencia de horas entre una fecha y otra
Publicado por: SrTrp en 18 Diciembre 2018, 06:29 am
Saludos,

- Si estás trabajando directamente con fechas Unix, lo más conveniente es:

Código
  1. <?php
  2.  
  3.  $f1 = time() - 3600; // Fecha/Hora actual Unix - 1 hora
  4.  $f2 = time();        // Fecha/Hora actual Unix
  5.  
  6.  $f1f = date("Y-m-d h:i:s", $f1); // Formateando la Fecha/Hora
  7.  $f2f = date("Y-m-d h:i:s", $f2); // a un formato entendible
  8.  
  9.  echo "\$f1 = $f1 ($f1f) <br>"; // Mostrando el formato Unix y
  10.  echo "\$f2 = $f2 ($f2f) <br>"; // el formato entendible
  11.  
  12.  $intervalo = ($f2 - $f1) / 3600; // Calcula la diferncia en horas
  13.  
  14.  echo "Diferencia = $intervalo horas"; // Muestra la diferencia
  15.  
  16.  // El formato Unix muestra la fecha/hora en segundos, por esto
  17.  // se puede hacer calculos matematicos sencillos para obtener
  18.  // dias (/86400 seg), horas (/3600 seg), minutos (/60 seg), etc.
  19.  
  20. ?>

Código:
$f1 = 1544845397 (2018-12-15 03:43:17)
$f2 = 1544848997 (2018-12-15 04:43:17)
Diferencia = 1 horas
Gracias ya estoy en ello solo que tengo un detalle no me crea como fecha una variable que tengo con la fecha unix me la asigna vacia al momento de hacerle el strtotime() imprimo antes de hacerle el strtotime y si tiene valor.
Código
  1. $obtere1 = "SELECT * FROM users WHERE id='$idmajicd'";
  2.            $obtere2 = $link->query($obtere1);
  3.            $obtere3 = $obtere2->fetch_array();
  4.  
  5.              $aux = $obtere3['tiempo'];
  6.              $actual =strtotime($aux);
  7.  
  8.  
  9.            $f1 = strtotime($aux); // Fecha/Hora actual Unix - 1 hora
  10.            $f2 = strtotime("now");        // Fecha/Hora actual Unix
  11.  
  12.            $f1f = date("Y-m-d h:i:s", $f1); // Formateando la Fecha/Hora
  13.            $f2f = date("Y-m-d h:i:s", $f2); // a un formato entendible
  14.            echo "\$f1 = $f1 ($f1f) <br>"; // Mostrando el formato Unix y
  15.            echo "\$f2 = $f2 ($f2f) <br>"; // el formato entendible
  16.  
  17.            $intervalo = ($f1 - $f2) / 3600; // Calcula la diferncia en horas
  18.  
  19.            echo "Diferencia = $intervalo horas"; // Muestra la diferencia
  20.  


Título: Re: No me dice la diferencia de horas entre una fecha y otra
Publicado por: EdePC en 19 Diciembre 2018, 01:49 am
- strtotime convierte un String con formato de fecha a un Integer fecha UNIX, en tu caso tu fecha ya es tipo UNIX.

- Si quieres convertir una fecha UNIX a una fecha UNIX :xD utilizando strtotime, primero tienes que formatear tu fecha Unix de entrada a un formato  de fecha String, esto lo puedes hacer con date("formato", Fecha_UNIX):

Código
  1. <?php
  2.  
  3.  $aux = "1545179382";
  4.  $actual = strtotime(date("Y-m-d h:i:s", $aux));
  5.  
  6.  echo $actual;
  7.  
  8. ?>


Título: Re: No me dice la diferencia de horas entre una fecha y otra
Publicado por: SrTrp en 19 Diciembre 2018, 04:48 am
Ahh cierto XD pensaba que al momento que extraia la información de la BD pensaba que lo almacenaba como string X_X
Me has salvado la vida gracias  ;-)  ;-)  ;-)  ;-)