Foros del Web » Programando para Internet » PHP »

Resta o Suma una Fecha

Estas en el tema de Resta o Suma una Fecha en el foro de PHP en Foros del Web. hola amigos FDW, espero que porfavor me ayuden es que igual no me sale bien una funcion que debo realizar. Esta funcion a una fecha ...
  #1 (permalink)  
Antiguo 21/04/2005, 09:55
 
Fecha de Ingreso: febrero-2005
Ubicación: chile, Santiasko
Mensajes: 728
Antigüedad: 12 años, 10 meses
Puntos: 1
Resta o Suma una Fecha

hola amigos FDW, espero que porfavor me ayuden es que igual no me sale bien una funcion que debo realizar.

Esta funcion a una fecha x, debo en una caja de texto sumar o restar x numeros y me debe desplegar la fecha, por ejemplo hoy es 21/04/05 y en una textbox ingreso 5 y presiono un boton, este me debe calcular y desplegar en pantalla 26/04/05... asi lo mismo si tengo la fecha 10/04/2005 y coloco en el texbox -9 me deberia mostrar 01/04/2005 ....

anteriormente calcule la edad de una persona....
por si puede ayudar aqui esta el codigo:
Código PHP:
<?php
include "karpedia.inc.php";
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
<title>Fecha Nacimiento</title>
</head>

<body>
<form name="form1" method="post" action="fecha.php">
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr>
      <td width="12%" class="labeltop">Fecha Naciemiento:</td>
      <td width="88%"><?php echo GetSelectFechaHTML($fecha); ?></td>
    </tr>
</table>    
<?php
 $guardar
=$_POST['Aceptar'];
 if (
$guardar==1){
  
$dia=$_POST['cb_dia'];
$mes=$_POST['cb_mes'];
$anio=$_POST['cb_ano'];

$edad floor(( (date("Y") - $anio ) * 365 + ( date("m") - $mes ) * 31 Date("d" ) - $dia )/365) ;
echo 
"Edad: ".$edad;
}
?>
    
    <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>
y aqui esta la funcion de la fecha:
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;
}

function 
FormatoFecha($fecha=''$formato='dd-mm-yyyy'){ //fecha en formato YYYY-MM-DD
 
if(!strlen($fecha)) $fecha=date("Y-m-d");
 
$valor='';
 
$meses=array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
 switch(
$formato){
  case 
"dd-mm-yyyy":
  
$valor=substr($fecha,8,2).'-'.substr($fecha,5,2).'-'.substr($fecha,0,4);
  break;
  case 
"dd/mm/yyyy":
  
$valor=substr($fecha,8,2).'/'.substr($fecha,5,2).'/'.substr($fecha,0,4);
  break;
  case 
"mmm yy":
  
$valor=substr($meses[((substr($fecha,5,2)*1)-1)],0,3).' '.substr(substr($fecha,0,4),-2);
  break;
  case 
"mmm yyyy":
  
$valor=substr($meses[((substr($fecha,5,2)*1)-1)],0,3).' '.substr($fecha,0,4);
  break;
  case 
"mmmm yy":
  
$valor=$meses[((substr($fecha,5,2)*1)-1)].' '.substr(substr($fecha,0,4),-2);
  break;
  case 
"mmmm yyyy":
  
$valor=$meses[((substr($fecha,5,2)*1)-1)].' '.substr($fecha,0,4);
  break;
  case 
"dd de mmmm de yyyy":
  
$valor=substr($fecha,8,2).' de '.$meses[((substr($fecha,5,2)*1)-1)].' de '.substr($fecha,0,4);
  break;
 }
 return 
$valor;

porfavor ayudenme es algo que al contar resulta facil, pero nose como realizarlo....

de ante mano gracias salu2
__________________
Una Vez Muerto el Perro.............Se acaba la Rabia :risa:
  #2 (permalink)  
Antiguo 21/04/2005, 10:49
 
Fecha de Ingreso: febrero-2005
Ubicación: chile, Santiasko
Mensajes: 728
Antigüedad: 12 años, 10 meses
Puntos: 1
hola, hasta ahora tengo esto en mi codigo pero me desplega la fecha de hoy
Código PHP:
<?php
$guardar
=$_POST['Aceptar'];

if (
$guardar==1){
$dia=$_POST['cb_dia'];
$mes=$_POST['cb_mes'];
$anio=$_POST['cb_ano'];
$numero=$_POST['numero'];
$fec_vencimidate("Y-m-d"strtotime("($dia +  $mes + $anio ) + $numero")); 
echo 
$fec_vencimi;
}

?>
como pueden ver la variable $numero es un numero que recojo de un textbox y los otros su nombre lo dice, ahora quiero sumar x numero a la fecha, pero no me resulta...

una ayudita porfavor......
__________________
Una Vez Muerto el Perro.............Se acaba la Rabia :risa:
  #3 (permalink)  
Antiguo 21/04/2005, 11:03
 
Fecha de Ingreso: julio-2003
Ubicación: Parana, ER
Mensajes: 72
Antigüedad: 14 años, 4 meses
Puntos: 0
Mira este ejemplo, que es muy sencillo:
Código PHP:
$fecha1 mktime(0,0,0,date("m"),date("d"),date("Y")); 
$fecha2 mktime(0,0,0,date("m"),date("d")+8,date("Y")); 
$fecha3 mktime(0,0,0,date("m")+2,date("d")-5,date("Y")); 

//Luego, para acuparla:

echo date("d/m/Y"$fecha1); //devuelve la fecha actual
echo date("d/m/Y"$fecha2); //le suma 8 días a la fecha actual
echo date("d/m/Y"$fecha3); //le resta 5 días y la suma 2 meses a la fecha actual.
/*
 También podes hacer lo mismo con los años.
 Lo bueno es que siempre te va a devolver una fecha válida, es decir nunca vas a obtener un 31 de Febrero (por poner un ejemplo)
*/ 
Saludos.
__________________
Victor Bracco
Programador PHP
Proyectos Freelance
  #4 (permalink)  
Antiguo 21/04/2005, 11:14
 
Fecha de Ingreso: febrero-2005
Ubicación: chile, Santiasko
Mensajes: 728
Antigüedad: 12 años, 10 meses
Puntos: 1
gracias, ahora vere que hago con el numero... que se llama $numero...

mi pregunta, donde calculo ponte tu si el usuario coloco 5 en la texbox y hoy es 21/04/2005, ahora quiero que me salga 26/04/2005...

mmmm en todo caso me ah ayudado bastante, tenia una confusion con la fecha....


gracias, asi que a experimentar se ah dicho....


salu2
__________________
Una Vez Muerto el Perro.............Se acaba la Rabia :risa:
  #5 (permalink)  
Antiguo 21/04/2005, 11:26
 
Fecha de Ingreso: febrero-2005
Ubicación: chile, Santiasko
Mensajes: 728
Antigüedad: 12 años, 10 meses
Puntos: 1
gracias Sabo

te pasaste, ahora pude realizar la funcion...

asi quedo ahora, y me funciona muy bien..
Código PHP:
<?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); 
}

?>
gracias, salu2
__________________
Una Vez Muerto el Perro.............Se acaba la Rabia :risa:
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 00:58.