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. Hola a todos,, Perdon por preguntar otra vez ya que esta pregunta ya la hicieron pero no se como recuperar los dias entre dos fechas ...
  #1 (permalink)  
Antiguo 14/06/2005, 11:47
 
Fecha de Ingreso: noviembre-2003
Ubicación: Guatemala
Mensajes: 72
Antigüedad: 21 años
Puntos: 0
Pregunta Restar fechas

Hola a todos,,
Perdon por preguntar otra vez ya que esta pregunta ya la hicieron pero no se como recuperar los dias entre dos fechas el codigo que estoy usando es el siguiente:

Código PHP:
$fecha1=date("d/m/Y");
$fecha2=date("d/m/Y",mktime(0,0,0,5,31,2005));    
$fecha1strtotime ($fecha1);
$fecha2 strtotime ($fecha2);
$dias = ($fecha1 $fecha2)/86400
Lo divido dentro de 86400 que son los segundos en un dia y me da como resultado -514 en cuanto los dias reales que hay entre el 31/05/2005 y 14/06/2005 son 14 días..

Gracias de Antemano..
  #2 (permalink)  
Antiguo 14/06/2005, 13:36
Avatar de GUNIRAN  
Fecha de Ingreso: octubre-2003
Ubicación: Rosario, Santa Fe, Argent
Mensajes: 65
Antigüedad: 21 años
Puntos: 0
Hola Juanta,

Utiliza la función time() en vez de date(), date() es más que nada para dar formato a las fechas, por ejemplo

<?php
$fechaA = time (); // Fecha actual.
$fechaB = mktime (0,0,0,5,31,2005); // Fecha a restar

echo ($fechaA - $fechaB) / 86400;
?>

Aquí te daría un resultado decimal por lo que luego lo podrías redondear.
__________________
Saludos,
Matías Hernán Piuma - Desarrollador Web
Programador PHP Freelance, especialidad: PHP / MySQL / XHTML / CSS
Rosario, Argentina
  #3 (permalink)  
Antiguo 14/06/2005, 19:53
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 20 años, 3 meses
Puntos: 102
http://www.forosdelweb.com/f18/sabe-n-dias-entre-fecha-otra-275731/

El problema con tu código es que le pasas un formato erroneo a strtotime() (dd-mm-yyy) : www.php.net/strtotime .. pero es redundante lo que tienes (obtienes el TIMESTAMP, le daz formato y vulves a obtener el mismo TIMESTAMP)... mejor las propuestas que te hemos dejado...

Consulta todas las funciones que desconoscas en www.php.net ... lee bien, ve los ejemplos que ahí te dejan y ve los comentarios de los usuarios...

Saludos y suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #4 (permalink)  
Antiguo 15/06/2005, 10:46
 
Fecha de Ingreso: noviembre-2003
Ubicación: Guatemala
Mensajes: 72
Antigüedad: 21 años
Puntos: 0
Gracias a GUNIRAN y JAM por responder estove buscando y encontre un codigo bueno creo que lo que me faltava como decia Jam es leer...y ya esta solucionado... este es el codigo que utilicé:

Código PHP:
$feante=explode("-",$u_pagos_);
$dias = (int)((time('void') - mktime (0,0,0,$feante[1],$feante[2],$feante[0]))/86400); 
donde $u_pagos_ alamcena una fecha obtenida de una tabla.

si segun uds. hay que cambiar algo porfa les agradeceria que me lo hicieran saber... y nuevamente gracias por contestar.
  #5 (permalink)  
Antiguo 15/06/2005, 15:09
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 20 años, 3 meses
Puntos: 102
... verás que.. soluciones hay muchas... llevamos tres solo en este post... y... ¿usas Base de Datos??? MUCHO MEJOR hacerlo con SQL!!!
Código:
SELECT DATEDIFF(campo_fecha, $tu_fecha) AS diferencia FROM tabla
y solo imprimes "diferencia" como su fuese un campo más (tendrás algo como $row['diferenncia']) ... obviamente suponiendo usas campos tipo DATE ó DATETIME...

$tufecha será una fecha que vendrá desde PHP (solo se me ocurre el caso que venda de un formulario) con el formato adecuado (YYYY-MM-DD)... pero te adelanto que si vaz a ocupar "hoy" eso, en SQL lo obtienes con CURDATE()...


.... cero y van 4....
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #6 (permalink)  
Antiguo 15/06/2005, 15:19
 
Fecha de Ingreso: febrero-2005
Ubicación: chile, Santiasko
Mensajes: 728
Antigüedad: 19 años, 9 meses
Puntos: 1
en pagina:
Código PHP:
function GetSelectFechaHTML($fecha=''){ //$fecha en formato YYYY-MM-DD HH:MM:SS
 
$html='';
 
$meses=array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
 if(
strlen($fecha)>=10){
  
$year=substr($fecha,0,4);
  
$mes=substr($fecha,5,2);
  
$dia=substr($fecha,8,2);
 } else {
  
$year=date("Y");
  
$mes=date("m");
  
$dia=date("d");
 }
 
$seldia='<select name="cb_dia" class="input" id="cb_dia">';
 
$selmes='<select name="cb_mes" class="input" id="cb_mes">';
 
$selano='<select name="cb_ano" class="input" id="cb_ano">';
 
$opdia='';
 
$opmes='';
 
$opano='';
 for(
$i=1;$i<=31;$i++){
   
$dd=substr("0".$i,-2);
   if(
$dd==$dia){
     
$opdia.='<option value="'.$dd.'" selected="selected">'.$dd.'</option>';
   } else {
     
$opdia.='<option value="'.$dd.'">'.$dd.'</option>';
   }
 }
 for(
$i=0;$i<12;$i++){
   
$mm=substr("0".($i+1),-2);
   if(
$mm==$mes){
     
$opmes.='<option value="'.$mm.'" selected="selected">'.$meses[$i].'</option>';
   } else {
     
$opmes.='<option value="'.$mm.'">'.$meses[$i].'</option>';
   }
 }
 for(
$i=85;$i>0;$i--){
   
$yy=date("Y")-$i;
   if(
$yy==$year){
     
$opano.='<option value="'.$yy.'" selected="selected">'.$yy.'</option>';
   } else {
     
$opano.='<option value="'.$yy.'">'.$yy.'</option>';
   }
 }
 
$seldia.=$opdia.'</select>';
 
$selmes.=$opmes.'</select>';
 
$selano.=$opano.'</select>';
 
$html=$seldia.'-'.$selmes.'-'.$selano;
 return 
$html;



Código PHP:
<?php
include "pagina.inc.php";
?>
<html>
<head>
<title>Calculo de Fecha:</title>
</head>

<body>
<form name="form1" method="post" action="fechacal.php">
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr>
      <td width="12%" class="labeltop">Fecha:</td>
      <td width="88%"><?php echo GetSelectFechaHTML($fecha); ?></td>
    </tr>
    <tr>
    <td>&nbsp;</td>
    </tr>
    <tr>  
    <td> <input name="numero" type="text" id="numero"></td>
    </tr>
</table>    


<?php


 $guardar
=$_POST['Aceptar'];

  if (
$guardar==1){
$dia=$_POST['cb_dia'];
$mes=$_POST['cb_mes'];
$anio=$_POST['cb_ano'];
$numero=$_POST['numero'];
$fecha1 mktime(0,0,0,date("$mes"),date("$dia")+$numero,date("$anio"));
echo 
date("d/m/Y"$fecha1); 
}

?>

    <p align="center">
      <input type="button" name="Button" value="Aceptar" onClick="javascript:document.forms[0].Aceptar.value=1;this.form.submit();" >
      <input name="Aceptar" type="hidden" id="Aceptar" value="0"> 
  </p>

</form>

</body>
</html>
es lo mas paresido que buscas, eso si en esto puedes ingresar un numero, esto te lo suma o resta, dependiendo del numero...

salu2 espero que te ayude
__________________
Una Vez Muerto el Perro.............Se acaba la Rabia :risa:
  #7 (permalink)  
Antiguo 15/06/2005, 16:06
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 20 años, 3 meses
Puntos: 102
Sobre tu código Yokosima... a simple vista me llamó la atención que tienes cosas como date("$mes") .. y aparentemente a $mes le asigas un valor... numérico?.. no lo sé... pero no veo que le pases un parámetro adecuado para la función date() (ejemplo: "Y, D, d, m, h, ....")... ¿de verdad te sirve esto???... ¿hay manera de verlo en línea trabajando??... hubiese sido bueno comentases al menos qué hace... me sorprende adivines lo que quiere juanta ...

Otras cosas... aparentemente contruyes tres listbox para elegir una fecha (no sé para qué) y que cada uno representa el día, mes y año respectivamente... pero no veo que hagas alguna validación con que se elija una fecha correcta (31-febrero-XXXX) ... ¿qué consecuencias tiene esto??... (si solo es para construir los listbox mejor hubiera sido el uso de JavaScript).

... tienes una función a la que no le pasas parámetros... siempre se construye desde cero (quien hace los listbox)... y solo recibes valores y le sumas otro campo (inisto... a simple vista)... ... entonces creo, para este caso... todo se hubiera resumido la línea donde empleas mktime()... definitivamente esto pertenece a otra cosa... ojalá puedas mostrarlo (solo por curiosidad)... o al menos comentarlos... le veo por ahí varios "detallitos".... el uso de substr() cuando pudiste usas un explode()... entre cosas como las que ya mencioné y otras más... la que me tiene con verdadero pendiente es el date("$mes") y demás... ....

Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
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:12.