Foros del Web » Programando para Internet » PHP »

Número de días entre dos fechas

Estas en el tema de Número de días entre dos fechas en el foro de PHP en Foros del Web. Hola, Quiero calcular el número de días que hay entre dos fechas posteriores a 12/12/1582 y que se reciben por URL, del tipo " loquesea.php?D1=1&M1=5&A1=2005&D2=10&M2=6&A2=2006 ...
  #1 (permalink)  
Antiguo 02/11/2011, 03:19
 
Fecha de Ingreso: octubre-2011
Mensajes: 36
Antigüedad: 12 años, 6 meses
Puntos: 2
Pregunta Número de días entre dos fechas

Hola,

Quiero calcular el número de días que hay entre dos fechas posteriores a 12/12/1582 y que se reciben por URL, del tipo "loquesea.php?D1=1&M1=5&A1=2005&D2=10&M2=6&A2=2006".

Pero al ejecutar el código, como resultado me sale "0" y varios avisos del tipo "Notice: Undefined variable: year in loquesea.php on line 129"

¿Alguna idea de qué hago mal?
GRACIAS por adelantado.


Este es el código en el que estoy trabajando:

Código:
<?
function wrongData($day1, $month1, $year1, $day2, $month2, $year2)
{
$wrong=false;
if ($year2<$year1) {
	$wrong=true;
} else {
	if ($year2=$year1 && $month2<$month1) {
	$wrong=true;
		} else {
			if ($year2=$year1 && $month2=$month1 && $day2<$day1) {
			   $wrong=true;
			}
	  }	
   return($wrong);  
   } 
} 

function isLeapYear()
{

if ($year%400 == 0) {
	$leap=true;
} else {
	if ($year%100 == 0) {
		$leap=false;
	} else {
		if ($year%4 == 0) {
			$leap=true;
		} else {
			$leap=false;
		}
	}
  }	
return($leap);	
}

function dayOfTheYear()
{
$dayscounter=$day;

	if ($month >11) { 
		$daysCounter = $daysCounter + 30; 
	}
	if ($month >10) { 
		$daysCounter = $daysCounter + 31;
	}
	if ($month >9) { 
		$daysCounter = $daysCounter + 30; 
	}
	if ($month >8) { 
		$daysCounter = $daysCounter + 31; 
	}
	if ($month >7) { 
		$daysCounter = $daysCounter + 31; 
	}
	if ($month >6) { 
		$daysCounter = $daysCounter + 30; 
	}
	if ($month >5) { 
		$daysCounter = $daysCounter + 31; 
	}
	if ($month >4) { 
		$daysCounter = $daysCounter + 30; 
	}
	if ($month >3) { 
		$daysCounter = $daysCounter + 31; 
	}
	if ($month >2) { 
		$daysCounter = $daysCounter + 28; 
	}
	if ($month >1) { 
		$daysCounter = $daysCounter + 31; 
	}
  
	if (isLeapYear($year) && $month > 2) { 
     $daysCounter = $daysCounter + 1;
	}
  return($daysCounter);

}

function daysYearsAfter1583()
{
$daysCounter=0;
$currentYear=1583;
 while ($currentYear<$year) {
	 $daysCounter=$daysCounter+365;
	 $leap=isLeapYear($currentYear);
	    if ($leap) {
			$daysCounter=$daysCounter+1;
		}
		$currentYear=$currentYear+1;
 }
return($daysCounter);
}

function daysAfter1583()
{
 return(daysYearsAfter1583($year) + dayOfTheYear($year,$month,$day));
}

 /****************** MAIN PROGRAM ********************/	
 
 
 $day1=$_GET["D1"];
 $month1=$_GET["M1"];
 $year1=$_GET["A1"];
 
 $day2=$_GET["D2"];
 $month2=$_GET["M2"];
 $year2=$_GET["A2"];
 
 

 if (wrongdata($day1, $month1, $year1, $day2, $month2, $year2)) {
	  print("E");
 } else {
	$counter1=daysAfter1583($year1, $month1, $day1);
	$counter2=daysAfter1583($year2, $month2, $day2);
	print($counter2-$counter1);
 }
 
$day=date("d");
$month=date("m");
$year=date("Y");


?>
  #2 (permalink)  
Antiguo 02/11/2011, 03:46
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Número de días entre dos fechas

Tienes un fallo, en lo mismo, en cada función......


Me explico:

Código PHP:


function suma $a$b) {
 return 
$a+$b;
}

$resultado suma(3,5);
echo 
$resultado//Imprime 8 
Eso sería una forma básica de una funcion que recibe parámetros. Y esto sería lo q haces tu:
Código PHP:


function suma ( ) {
 return 
$a+$b//No existe $a o $b, no sabe que son
}

$resultado suma(3,5);
echo 
$resultado
¿Conclusion? Te falta añadir los parámetros a las funciones ;)

Ej:

Código PHP:

function daysAfter1583($year$month$day)
{
 return(
daysYearsAfter1583($year) + dayOfTheYear($year,$month,$day));

Y así con todas (cada funcion tendrá sus parámetros !)
__________________
>> Eleazan's Source
>> @Eleazan
  #3 (permalink)  
Antiguo 02/11/2011, 04:17
 
Fecha de Ingreso: octubre-2011
Mensajes: 36
Antigüedad: 12 años, 6 meses
Puntos: 2
Respuesta: Número de días entre dos fechas

Tienes toda la razón... ahora funciona perfectamente.

Muchas Gracias, Eleazan!

Etiquetas: variables
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 08:03.