Foros del Web » Programando para Internet » PHP »

Script para incrementar dias a una fecha

Estas en el tema de Script para incrementar dias a una fecha en el foro de PHP en Foros del Web. Buenas, soy medio novatillo en php, y estoy intentando crear un script para incrementar una fecha en un nº determinado de dias. Concretamente, en funcion ...
  #1 (permalink)  
Antiguo 12/11/2010, 05:50
 
Fecha de Ingreso: noviembre-2010
Mensajes: 4
Antigüedad: 14 años, 1 mes
Puntos: 0
Script para incrementar dias a una fecha

Buenas, soy medio novatillo en php, y estoy intentando crear un script para incrementar una fecha en un nº determinado de dias. Concretamente, en funcion del mes, que incremente la fecha en 31, 30 o 28 dias.

Pero, falla, da un error "Warning: mktime() expects parameter 6 to be long"

Supongo que no sera muy dificil, pero ya digo, estoy empezando con ésto.
Alguna sugerencia?
Gracias de antemano, y os paso el script:



<?php
$Inicio = "10/11/2010";
$Fin= "10/05/2011";
$Fecha=$Inicio;
$Dias= date('t', $Fecha);
echo "Fecha Inicio intervalo " , $Inicio, "<br>";
echo "Fecha Fin Intervalo " , $Fin,"<br>";
echo "Dias del mes ", $Dias,"<br>";
echo $Fecha;
do {
$Dias= date('t', $Fecha);
echo $Dias;
echo $Fecha, "<br>";
$dyh = mktime(0, 0, 0, $Fecha[1], $Fecha[0], $Fecha[2]) + 24*60*60*$Dias;
$Fecha = date('d',$dyh)."/".date('m',$dyh)."/".date('Y',$dyh);
echo $Fecha, "<br>";
}
while ($Fecha < $Fin);


?>
  #2 (permalink)  
Antiguo 12/11/2010, 06:50
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 8 meses
Puntos: 26
Respuesta: Script para incrementar dias a una fecha

No entiendo lo que quieres hacer, pero ya se a que se debe tu error. $Fecha no es un array, es un string con una data, si lo quieres convertir a array utiliza la funcion explode(): http://php.net/manual/es/function.explode.php
Código PHP:
$fecha explode("/",$Fecha);
$dyh mktime(000$fecha[1], $fecha[0], $fecha[2]) + 24*60*60*$Dias
Aún asi como no entiendo del todo que es lo que buscas no puede ayudarte mas.

EDIT: Puedes optimizar el codigo:
Código PHP:
$Fecha date('d/m/Y',$dyh); 
en vez de
Código PHP:
$Fecha date('d',$dyh)."/".date('m',$dyh)."/".date('Y',$dyh); 
  #3 (permalink)  
Antiguo 12/11/2010, 07:02
 
Fecha de Ingreso: febrero-2010
Mensajes: 818
Antigüedad: 14 años, 10 meses
Puntos: 55
Respuesta: Script para incrementar dias a una fecha

aca te dejo un ejemplo de como hacerlo.

Código PHP:
<?php
$x 
5//dias a sumar
$fecha "2010-11-12"//fecha inicial
$fechadate("Y-m-d"strtotime("$fecha + "$x ." days")); //se suman los $x dias

echo $fecha//muestra la fecha con los dias sumados
?>
  #4 (permalink)  
Antiguo 15/11/2010, 05:30
 
Fecha de Ingreso: noviembre-2010
Mensajes: 4
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Script para incrementar dias a una fecha

Ok, muchas gracias por vuestras respuestas. Me pongo a probar los scripts que me habeis mandado.

La idea es la siguiente: Estoy modificando un calendario, que tiene agenda de eventos, y para dicha agenda, necesito que una tarea/evento se pueda repetir durante x tiempo. Pongamos por ejemplo, una reunion con distintos departamentos cada 20 de mes, o llamar al asesor cada 3 meses, el dia 3.

Para ello, necesito la fecha de inicio del intervalo, la fecha de finalizacion, la frecuencia(cada mes, cada 2 meses, cada año), y el dia que ocurrira el evento(cada dia 22, cada dia 3, etc).

Por eso, creé el script en el que queria añadir un nº determinado de dias a una fecha.
Ejemplo:
Inicio: 15/11/2010
Fin: 30/05/2011
Frecuencia: cada 2 meses
Dia: 3(el evento se realizara cada dia 3).


El codigo original, tiene un fallo simple, y es que toma todos los meses como 30 dias, sin distinguir Febrero(28) o Marzo(31).

Perdonad por el ladrillo, y espero haberme expresado bien.
Gracias de nuevo
  #5 (permalink)  
Antiguo 15/11/2010, 06:11
 
Fecha de Ingreso: noviembre-2010
Mensajes: 4
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Script para incrementar dias a una fecha

Os dejo el código que quiero modificar:

Codigo PHP:
Cita:
if($type == 'Monthly') {
//Variables que se recogen:
//$Type: Tipo de repeticion(Diaria, Semanal, mensual o anual)
//avg_monthcount: El asunto principal por el que falla, los dias del mes. Coge 30
//$Interval: Intervalo en dias final.(Dia 3 + 30 dias)
//$Starting: Fecha inicio de intervalo
// $limiting: Fecha fin del intervalo
//$Repeatinteval: La variable que devuelve la fecha una vez sumados los dias
//Errores: 1) No se utiliza la frecuencia(cada 2 meses, cada 2 años), que se recoge en una variable $Frequency. En su lugar está la variable $count, que agregara al calendario, en funcion del tipo, una repeticion mensual, anual, sin tener en cuenta la frecuencia(cada 2 meses, cada 2 años, etc)
//2) Se toma como numero de dias del mes 30, en $avg_monthcount
$count = 0;
$avg_monthcount = 30;
while(true) {
++$count;
$interval = $count * $avg_monthcount;

if(self::mktime(self::nexttime($starting, "+$interval days")) > $limiting) {
break;
}
$repeatInterval[] = $interval;
}
} else if($type == 'Yearly') {
//fallaria en años bisiestos
$count = 0;
$avg_monthcount = 365;
while(true) {
++$count;
$interval = $count * $avg_monthcount;
if(self::mktime(self::nexttime($starting, "+$interval days")) > $limiting) {
break;
}
$repeatInterval[] = $interval;
}
}
return $repeatInterval;
Como veis fundamentalmente, sobre unas fechas de inicio y fin, crea fechas, con los parametros dados(frecuencia, tipo de repeticion), pero toma como base 30 dias por mes, y no tiene en cuenta la frecuencia de repeticion.
  #6 (permalink)  
Antiguo 16/11/2010, 03:24
 
Fecha de Ingreso: noviembre-2010
Mensajes: 4
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Script para incrementar dias a una fecha

Subo el post, por si alguien me puede dar alguna idea.

Saludos
  #7 (permalink)  
Antiguo 16/11/2010, 04:11
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 8 meses
Puntos: 26
Respuesta: Script para incrementar dias a una fecha

Lo que no entiendo es porque vas sumando de 30 dias en 30 dias si puedes hacer directamente sumar 1 mes. Así te aseguras que funciona correctamente.
Ejemplo:
Código PHP:
$fecha "2010-11-12";
$fechadate("Y-m-d"strtotime("$fecha + 2 months"));
echo 
$fecha//imprime 2011-01-12 

Etiquetas: dias, incrementar, fechas
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:42.