• Viernes 8 de Noviembre de 2024, 21:38

Autor Tema:  Script para incrementar dias a una fecha  (Leído 3597 veces)

J-Ant

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Script para incrementar dias a una fecha
« en: Viernes 12 de Noviembre de 2010, 12:34 »
0
Buenas, estoy como quien dice, iniciandome en php, e intento añadir un intervalo de dias a una fecha dada, siempre que dicha fecha esté en un intevalo.
El asunto es que no funciona, me da"Warning: mktime() expects parameter 6 to be long".

Os paso el codigo, a ver si se os ocurre algo:

<?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);


?>



Gracias de antemano

fonsi3

  • Miembro activo
  • **
  • Mensajes: 95
    • Ver Perfil
Re: Script para incrementar dias a una fecha
« Respuesta #1 en: Sábado 13 de Noviembre de 2010, 14:53 »
0
Estoy viendo que $fecha contiene un string, entonces porque lo accedes como si fuera un array??
Cha che chi cho chu buenichimo!
http://mensoscripts.com

Links de interes: HTML | CCS2~CSS* | PHP
Indispensables tools]Firebug[/url] | Web Developer | FireFTP | Live Headers

J-Ant

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Script para incrementar dias a una fecha
« Respuesta #2 en: Lunes 15 de Noviembre de 2010, 13:17 »
0
Cierto, mezcle codigo, éste venia de un explode.
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, os lo paso, tiene 2 fallos:
1) Al añadir dias a una fecha, toma como valor fijo 30 dias por mes, con lo que ignora variaciones Febrero(28), o Marzo(31).
2) Se puede decidir cada cuanto tiempo quiero el evento(cada 2 meses, 2 años, cada mes, etc), pero no toma en cuenta la variable donde se recoge dicho dato.
Citar
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;

Gracias de nuevo por la atención.

LeGatoRojo

  • Miembro HIPER activo
  • ****
  • Mensajes: 552
  • Nacionalidad: mx
    • Ver Perfil
    • LeGatoRojo
Re: Script para incrementar dias a una fecha
« Respuesta #3 en: Martes 16 de Noviembre de 2010, 18:07 »
0
Para esos casos, yo siempre ocupo MySQL

Código: PHP
  1.  
  2.  
  3. mysql_query("SELECT DATE_ADD('2010-03-26', INTERVAL 123 DAY)");
  4.  
  5.  
  6.  
Un día desperte y en lugar de dientes tenía colmillos, en lugar de manos, tenía garras; pero lo más impactante fue el color escarlata de mi pelaje.