Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Restar fechas entre date() de php y date de Mysql

Estas en el tema de Restar fechas entre date() de php y date de Mysql en el foro de PHP en Foros del Web. Hola como andan? Estoy trancado con algo, estoy trabajando en una aplicacion y una de las cosas que queiro hacer es mostrar en pantalla el ...
  #1 (permalink)  
Antiguo 21/08/2014, 10:41
Avatar de Hyemin  
Fecha de Ingreso: agosto-2014
Mensajes: 147
Antigüedad: 10 años, 3 meses
Puntos: 0
Restar fechas entre date() de php y date de Mysql

Hola como andan?

Estoy trancado con algo, estoy trabajando en una aplicacion y una de las cosas que queiro hacer es mostrar en pantalla el vencimiento de un certificado, para ello lo que voy a hacer es medir, si la fecha de vencimiento es <60 dias a la fecha de hoy doy una alerta.

Para ello, necesito restar dos fechas, en mi caso estoy jugando con un sandbox con este codigo

Código:
<?php
include_once 'conexion.php'; //aca tengo la conexion a la base

$query = "select * from clientes where id=1"; //selecciono un unico registro de pruebas

$result = mysqli_query($conexion, $query);
           if ($result == false) {
           echo ('Error al traer los datos');
           mysqli_close($conexion);
           exit();
       }

       
$result_ar =  mysqli_fetch_assoc($result);       

$fecha_inicio = date('d/m/Y'); //defino la fecha de hoy)

$fecha_fin = date ($result_ar['vencimiento']); //tomo el valor del campo vencimiento, que es un field de tipo DATE de Mysql5

$total = date($fecha_fin)- date ($fecha_inicio); //resto en $total las fechas

echo "<p> Fecha de hoy: $fecha_inicio </a> </p>"; /

echo "<p> Fecha que vence: $fecha_fin </a> </p>";

echo "<p> Total: $total </a> </p>";
Siendo la fecha de hoy 21-08/2014 y la fecha de vencimiento 18/08/2016 el resulatdo que obtengo en la pagina es el siguiente:

Cita:
Fecha de hoy: 21/08/2014

Fecha que vence: 2016-08-18

Total: 1995
Por lo que lei, no se puede escribir la fecha del Mysql en un formato D/M/Y y solo lo admite Y/M/D, imagino que ahi esta el error

Estoy buscando formas de restar igualmente esas dos fechas
  #2 (permalink)  
Antiguo 21/08/2014, 10:57
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: Restar fechas entre date() de php y date de Mysql

El formato lo puedes cambiar en la consulta con la función DATE_FORMAT: http://dev.mysql.com/doc/refman/5.6/...on_date-format
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 21/08/2014, 11:31
Avatar de Hyemin  
Fecha de Ingreso: agosto-2014
Mensajes: 147
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Restar fechas entre date() de php y date de Mysql

Cita:
Iniciado por hhs Ver Mensaje
El formato lo puedes cambiar en la consulta con la función DATE_FORMAT: [url]http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html#function_date-format[/url]
Gracias, voy a estar leyendo el sitio, por ahora encontre una funcion alli pero no me esta funcionando crrectamente

Nuevo codigo
Código:
$fecha_inicio = date('d/m/Y');
$fecha_fin = date ('d/m/Y', strtotime($result_ar['vencimiento']));
$total = date($fecha_fin)- date ($fecha_inicio);
echo "<p> Fecha de hoy: $fecha_inicio </a> </p>";
echo "<p> Fecha que vence: $fecha_fin </a> </p>";
echo "<p> Total: $total </a> </p>";
Resultado del codigo:
Cita:
Fecha de hoy: 21/08/2014

Fecha que vence: 18/08/2016

Total: -3
Ahora me muestra las fechas correctamente, pero la resta me devuelve un valor erroneo
  #4 (permalink)  
Antiguo 21/08/2014, 11:49
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: Restar fechas entre date() de php y date de Mysql

la variable $total que valor esperas que tenga ? dias, meses ?
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #5 (permalink)  
Antiguo 21/08/2014, 11:53
Avatar de Hyemin  
Fecha de Ingreso: agosto-2014
Mensajes: 147
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Restar fechas entre date() de php y date de Mysql

Cita:
Iniciado por hhs Ver Mensaje
la variable $total que valor esperas que tenga ? dias, meses ?
La variable $total me sirve que tenga dias, por defecto que valor me da la resta date - date?
  #6 (permalink)  
Antiguo 21/08/2014, 12:00
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: Restar fechas entre date() de php y date de Mysql

date devuelve un string, así que estas haciendo la diferencia de dos cadenas por eso no obtienes el resultado que esperas
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #7 (permalink)  
Antiguo 21/08/2014, 12:17
Avatar de Hyemin  
Fecha de Ingreso: agosto-2014
Mensajes: 147
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Restar fechas entre date() de php y date de Mysql

Cita:
Iniciado por hhs Ver Mensaje
date devuelve un string, así que estas haciendo la diferencia de dos cadenas por eso no obtienes el resultado que esperas
LO puse asi por que cuando le paso date() me devuelve una fecha equivocada, por ejemplo, uso este codigo:

Código PHP:
$fecha_inicio date('d/m/Y');
$fecha_fin date ('d/m/Y'strtotime($result_ar['vencimiento']));
$fecha_fin date('d/M/Y'$fecha_fin);
$total date($fecha_fin)- date ($fecha_inicio);
echo 
"<p> Fecha de hoy: $fecha_inicio </a> </p>";
echo 
"<p> Fecha que vence: $fecha_fin </a> </p>";
echo 
"<p> Total: $total </a> </p>"
Primero hago que la fecha se guarde con el formato que me interesa pero en caracteres y luego la paso a formato fecha de nuevo, ahora me dice que "fecha_fin" es 31/12/1969 (no se donde saca ese valor)

El resultado es:
Cita:
Fecha de hoy: 21/08/2014

Fecha que vence: 31/Dec/1969

Total: 10
  #8 (permalink)  
Antiguo 21/08/2014, 13:09
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: Restar fechas entre date() de php y date de Mysql

Código PHP:
Ver original
  1. date_default_timezone_set('America/Mexico_City');
  2.  
  3. $hoy = new DateTime();
  4. $vencimiento = new DateTime($result_ar['vencimiento']);
  5. $total = $hoy->diff($vencimiento)->format('%a');
  6.  
  7. echo $hoy->format('d/m/Y').'<br>';
  8. echo $vencimiento->format('d/m/Y').'<br>';
  9. echo $total.'<br>';
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #9 (permalink)  
Antiguo 22/08/2014, 07:36
Avatar de Hyemin  
Fecha de Ingreso: agosto-2014
Mensajes: 147
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Restar fechas entre date() de php y date de Mysql

Cita:
Iniciado por hhs Ver Mensaje
Código PHP:
Ver original
  1. date_default_timezone_set('America/Mexico_City');
  2.  
  3. $hoy = new DateTime();
  4. $vencimiento = new DateTime($result_ar['vencimiento']);
  5. $total = $hoy->diff($vencimiento)->format('%a');
  6.  
  7. echo $hoy->format('d/m/Y').'<br>';
  8. echo $vencimiento->format('d/m/Y').'<br>';
  9. echo $total.'<br>';
Gracias por el ejemplo y por tu tiempo, lo voy a estar estudiando y voy a implementarlo ya que no veo numeros negativos en la resta y tengo que ver como los puedo describir

Última edición por Hyemin; 22/08/2014 a las 07:50

Etiquetas: date, fecha, mysql, registro, restar, select
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 12:16.