Foros del Web » Programando para Internet » PHP »

Sumar Un Numero A Una Fecha

Estas en el tema de Sumar Un Numero A Una Fecha en el foro de PHP en Foros del Web. Hola sigo avanzando, ahora que calcule los dias, necesito sumarselos a una fecha es decir tengo una fecha $Fecha_instalacion , 2006-10-30 y le quiero sumar ...
  #1 (permalink)  
Antiguo 17/02/2006, 09:54
 
Fecha de Ingreso: junio-2005
Mensajes: 337
Antigüedad: 12 años, 6 meses
Puntos: 1
Sumar Un Numero A Una Fecha

Hola sigo avanzando, ahora que calcule los dias, necesito sumarselos a una fecha
es decir tengo una fecha $Fecha_instalacion , 2006-10-30 y le quiero sumar 20 dias con la variable $Vencimiento_dias y asignarselo a otra variable llamada $Fecha_reemplazo
Yo puse
$Fecha_reemplazo= date(yyyy-mm-dd,($Fecha_instalacion +$Vencimiento_dias)); Print "$Fecha_reemplazo";

pero me devuelve 0, si saco la sentencia la variable $Fecha_reemplazo tiene el mismo formato que $Fecha_instalacion, que estoy haciendo mal??
Gracias!!
  #2 (permalink)  
Antiguo 17/02/2006, 10:10
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 12 años, 3 meses
Puntos: 2
Cuando trabajas con operaciones matemáticas en fechas si no quieres complicarte la vida pasa todo a timestamp, opera con esos enteros y luego pasa el resultado a fecha nuevamente. Para tu caso el script quedaría:

Código PHP:
<?php
// Seteo fecha de comienzo
$fecha_inicial="2006-10-30";
// Pongo los dias que quiero sumar
$dias_a_sumar=20;

// Paso la fecha de comienzo a timestamp
$tiempo=strtotime($fecha_inicial);
// Paso los dias a segundos
$sumar=$dias_a_sumar*86400;

// Formatear date a gusto, aca viene dd/mm/aaaa
echo date("j/n/Y"$tiempo+$sumar);
?>
Toda la operatoria para pasar de fecha a timestamp y viceversa lo haces con las funciones destinadas a tal cosa. Para mas informacion revisa php.net/date php.net/strtotime

Saludos.
__________________
R4DS en español | R4DS en inglés
  #3 (permalink)  
Antiguo 17/02/2006, 10:26
 
Fecha de Ingreso: junio-2005
Mensajes: 337
Antigüedad: 12 años, 6 meses
Puntos: 1
Hola zaqpz : te cuento, probe lo que me pasaste
<?php
$inicio=strtotime($Fecha_instalacion);
$dias=($Vencimiento_dias*86400); (ya que no se cuantos dias le voy a sumar, lo ingresa el usuario)
echo date("yyyy-mm-dd",$inicio+$dias);
?>
pero me devuelve 0000-00-00, lei lo de strtotime que me pasas de la pagina php.net pero es cuando sabes la fecha ya que te setea por ejemplo,echo strtotime ("10 September 2000"), "\n";
me estoy equivocando en algo o me falta otra conversion? si me das una mano te lo re agradeceria, un beso!
  #4 (permalink)  
Antiguo 17/02/2006, 11:05
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 12 años, 3 meses
Puntos: 2
Hola. El formato que le asignaste a la función date no es el correcto. Si tu quieres darle a la salida un formato aaaa-mm-dd, la función quedaría: date("Y-n-j",$inicio+$dias). Te recomiendo que visites http://www.php.net/date para saber como formatear a gusto con date.

Por otro lado no se que contenido tengas en $Vencimiento_dias ni en $Fecha_instalacion, el script que hice esta preparado para recibir en $Vencimiento_dias un entero que represente una cantidad de días a sumar, y en $Fecha_instalacion una fecha en formato aaaa-mm-dd.

A continuación te dejo el código con el date corregido, y además le agrego la declaración del contenido de esas variables que no se que traen en tu script, para que veas que funciona correctamente:

Código PHP:
<?php
// Esto es lo que deben traer tus variables para el correcto funcionamiento
$Fecha_instalacion="2006-10-30";
$Vencimiento_dias=20;

$inicio=strtotime($Fecha_instalacion);
$dias=($Vencimiento_dias*86400);
echo 
date("Y-n-j",$inicio+$dias); 
?>
Yo deducí que tu tienes en $Fecha_instalacion una fecha aaaa-mm-dd por lo que leí en tu 1º mensaje, si en esa variable recibes otra cosa me dices y vemos como pasamos esa otra cosa a un timestamp.

Te mando un saludo.

PD: strtotime pasa fechas en formato ingles a timestamp. Si bien esa función es capaz de pasar "10 September 2000" a segundos, también lo es de pasar 2000-9-10.
__________________
R4DS en español | R4DS en inglés

Última edición por zaqpz; 17/02/2006 a las 11:10
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 22:52.