Foros del Web » Programando para Internet » PHP »

restar fechas

Estas en el tema de restar fechas en el foro de PHP en Foros del Web. Buenas, Estoy intentando restar la fecha recogida de un form con la actual y el resultado me devuelve 31, si la diferencia de dia es ...
  #1 (permalink)  
Antiguo 18/05/2011, 09:35
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 17 años
Puntos: 2
restar fechas

Buenas,

Estoy intentando restar la fecha recogida de un form con la actual y el resultado me devuelve 31, si la diferencia de dia es 1 si es dos 62....

no deberia 1???
Código PHP:
Ver original
  1. $dia = $_POST['dia'];
  2. $mes = $_POST['mes'];
  3. $ano = $_POST['ano'];
  4.  
  5. $dia_a = date('d');
  6. $mes_m = date('m');
  7. $ano_y = date('Y');
  8.  
  9. $fecha = mktime(0,0,0,$dia_a, $mes_m, $ano_y);
  10.  
  11. $fecha2 = mktime(0,0,0,$dia, $mes, $ano);
  12.  
  13.  
  14. $fechafinal = round(($fecha - $fecha2) - (1*24* 60 * 60));
  15.  
  16. echo $fechafinal;
  #2 (permalink)  
Antiguo 18/05/2011, 10:15
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 9 meses
Puntos: 155
Respuesta: restar fechas

¿quieres los dias entre esas dos fechas?
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #3 (permalink)  
Antiguo 18/05/2011, 10:22
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 17 años
Puntos: 2
Respuesta: restar fechas

Cita:
Iniciado por mogurbon Ver Mensaje
¿quieres los dias entre esas dos fechas?
si quiero que me muestre los dias.
  #4 (permalink)  
Antiguo 18/05/2011, 10:23
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 9 meses
Puntos: 155
Respuesta: restar fechas

http://www.desarrolloweb.com/articul...echas-php.html
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #5 (permalink)  
Antiguo 18/05/2011, 10:53
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 17 años
Puntos: 2
Respuesta: restar fechas

lo tengo hecho como comenta en esta web y me sale lo que comente mas arriba.
  #6 (permalink)  
Antiguo 18/05/2011, 11:08
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 9 meses
Puntos: 155
Respuesta: restar fechas

pues yo veo que en lugar de dividir entre 60 * 60 * 24 se lo restas a la diferencia entre dias
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #7 (permalink)  
Antiguo 18/05/2011, 11:56
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 17 años
Puntos: 2
Respuesta: restar fechas

Cita:
Iniciado por mogurbon Ver Mensaje
pues yo veo que en lugar de dividir entre 60 * 60 * 24 se lo restas a la diferencia entre dias
mm no lo divide.
(copiado de link que me dejaste)

//convierto segundos en días
$dias_diferencia = $segundos_diferencia / (60 * 60 * 24);

saludos
  #8 (permalink)  
Antiguo 18/05/2011, 13:09
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 9 meses
Puntos: 155
Respuesta: restar fechas

Cita:
Iniciado por Blashak Ver Mensaje
Buenas,

Estoy intentando restar la fecha recogida de un form con la actual y el resultado me devuelve 31, si la diferencia de dia es 1 si es dos 62....

no deberia 1???
Código PHP:
Ver original
  1. $dia = $_POST['dia'];
  2. $mes = $_POST['mes'];
  3. $ano = $_POST['ano'];
  4.  
  5. $dia_a = date('d');
  6. $mes_m = date('m');
  7. $ano_y = date('Y');
  8.  
  9. $fecha = mktime(0,0,0,$dia_a, $mes_m, $ano_y);
  10.  
  11. $fecha2 = mktime(0,0,0,$dia, $mes, $ano);
  12.  
  13.  
  14. $fechafinal = round(($fecha - $fecha2) - (1*24* 60 * 60));# tons aqui no restas vea??
  15.  
  16. echo $fechafinal;
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #9 (permalink)  
Antiguo 18/05/2011, 13:23
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 17 años
Puntos: 2
Respuesta: restar fechas

disculpa..
$fechafinal = round(($fecha - $fecha2) - (1*24* 60 * 60));
lo tenia con / me equivoque al escribirlo.
  #10 (permalink)  
Antiguo 18/05/2011, 15:19
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 9 meses
Puntos: 155
Respuesta: restar fechas

oooodtia que me resurro en la inche odtiaaaaaa!!!! disculpao estas jolinessss!!!

pa pronto no entiendo cual es el p2?

este codigo esta bien

Código PHP:
Ver original
  1. //defino fecha 1
  2. $ano1 = 2011;
  3. $mes1 = 05;
  4. $dia1 = 18;
  5.  
  6. //defino fecha 2
  7. $ano2 = 2011;
  8. $mes2 = 05;
  9. $dia2 = 11;
  10.  
  11. //calculo timestam de las dos fechas
  12. $timestamp1 = mktime(0,0,0,$mes1,$dia1,$ano1);
  13. $timestamp2 = mktime(4,12,0,$mes2,$dia2,$ano2);
  14.  
  15. //resto a una fecha la otra
  16. $segundos_diferencia = $timestamp1 - $timestamp2;
  17. //echo $segundos_diferencia;
  18.  
  19. //convierto segundos en días
  20. $dias_diferencia = $segundos_diferencia / (60 * 60 * 24);
  21.  
  22. //obtengo el valor absoulto de los días (quito el posible signo negativo)
  23. $dias_diferencia = abs($dias_diferencia);
  24.  
  25. //quito los decimales a los días de diferencia
  26. $dias_diferencia = floor($dias_diferencia);
  27.  
  28. echo $dias_diferencia;
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #11 (permalink)  
Antiguo 18/05/2011, 17:01
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: restar fechas

Existe en la clase DateTime, el método diff
Código PHP:
Ver original
  1. <?php
  2. class DateDiff{
  3.     public static function getDiff($datetime1, $datetime2){
  4.         $d1 = new DateTime($datetime1);
  5.         $d2 = new DateTime($datetime2);
  6.         $interval = $d1->diff($d2);
  7.         return $interval->format('%y años %m meses %d días');
  8.     }
  9. }
  10. echo DateDiff::getDiff('2011-05-18', '2011-05-11'); // imprime 0 años 0 meses 7 días
  11. echo DateDiff::getDiff('2011-01-18', '2011-05-18'); // imprime 0 años 4 meses 0 días
  12. echo DateDiff::getDiff('2005-05-18', '2011-05-18'); // imprime 6 años 0 meses 0 días
  13. echo DateDiff::getDiff('2005-01-11', '2011-05-18'); // imprime 6 años 4 meses 7 días
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #12 (permalink)  
Antiguo 19/05/2011, 07:07
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 17 años
Puntos: 2
Respuesta: restar fechas

abimaelrc, gracias por el codigo que me dejaste pero logre solucionarlo.

El problema que tenia era que la fecha que recogia del formulario era una variable de tipo string, solo tuve que convertirlo a integer y listo.

Codigo final:

Código PHP:
Ver original
  1. //defino fecha 1
  2. $ano1 = $_POST("ano");
  3. $mes1 = $_POST("mes");
  4. $dia1 = $_POST("dia");
  5.  
  6. //se convierte de string a integer
  7. $mes1 = (int)$mes1;
  8. $dia1 = (int)$dia1;
  9. $ano1 = (int)$ano1;

Saludos y gracias

Etiquetas: fechas, restar
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 13:11.