note 19796 deleted from ref.datetime by victor
| From: | victor@php.net | Date: | Mon, 09 Dec 2002 18:53:33 +0000 |
| Subject: | note 19796 deleted from ref.datetime by victor | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-40617@lists.php.net to get a copy of this message | ||
dameFechas($dateINI,$dateEND) in the format "20020311" will return an array with the dates
between that two days.
For example:
var_dump(dameFechas("20011230","20020102"));
will return
array(4) {
[0]=>
string(8) "20020102"
[1]=>
string(8) "20020101"
[2]=>
string(8) "20011231"
[3]=>
string(8) "20011230"
}
<?
// Bisiesto
function esBisiesto($y) {
$res=$y%4==0 && $y%100<>0 || $y%400==0;
return $res;
}
function numDias($i_ano,$i_mes) {
switch ($i_mes) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
break;
case 4:
case 6:
case 9:
case 11:
return 30;
break;
case 2:
if (!esBisiesto($i_ano)) { return 28; } else { return 29; };
break;
}
}
function formatoa2($i) {
if (strlen($i)==1)
return "0".$i;
else
return $i;
}
function menosmenosuno(&$s_cad) {
$s_cad--;
$s_cad=formatoa2($s_cad);
}
function dameFechas($fechaIni,$fechaFin) {
$a_res=array();
$ini_ano=substr($fechaIni,0,4);
$fin_ano=substr($fechaFin,0,4);
$ini_mes=substr($fechaIni,4,2);
$fin_mes=substr($fechaFin,4,2);
$ini_dia=substr($fechaIni,6,2);
$fin_dia=substr($fechaFin,6,2);
$i=$fin_dia;
while (($fin_ano.$fin_mes)>=($ini_ano.$ini_mes)) {
while ($fin_mes>=1 && ($fin_ano.$fin_mes)>=($ini_ano.$ini_mes)) {
while ($fin_dia>=1 && ($fin_ano.$fin_mes.$fin_dia)>=($ini_ano.$ini_mes.$ini_dia)) {
$a_res[]=$fin_ano.$fin_mes.$fin_dia;
menosmenosuno($fin_dia);
}
menosmenosuno($fin_mes);
$fin_dia=numDias($fin_ano,$fin_mes);
}
$fin_mes=12;
$fin_dia=31;
$fin_ano--;
}
return $a_res;
}
echo "<pre>";
var_dump(dameFechas("20020309","20020310"));
echo "</pre>";
?>
Hope this helps.