Datumreeks
Auteur: Stefan14 - 27 december 2009 - 18:54 - Gekeurd door: Koen - Hits: 2547 - Aantal punten: (0 stemmen)
Dit script geeft een reeks opeenvolgende data weer aan de hand van een uitgangsdatum. Dit kan zowel omhoog als omlaag zijn.
De uitkomst wordt in een array teruggegeven.
Let wel, dat dit script niet geschikt is voor periodes langer dan 30 dagen. Dan moeten er namelijk nog aanvullingen gedaan worden.
|
Code: |
<?php
function showdatesequence($date, $aantaldagen, $soort)
{
//date is de uitgangsdatum, in te voeren in het formaat yyyy-mm-dd
//aantaldagen is het aantal dagen dat er bij geteld of vanaf getrokken moet worden, maximaal 30 dagen.
//soort heeft de waarde 'omhoog' of 'omlaag', afhankelijk van of er opgeteld of afgetrokken moet worden.
$dag = substr($date, 8, 2);
$maand = substr($date, 5, 2);
$jaar = substr($date, 0, 4);
if ($soort == 'omlaag')
{
for ($i=0; $i<=$aantaldagen-1; $i++)
{
if ($dag - $i > 0) // wanneer de maand niet verandert, alleen de dagen aftrekken.
{
$newdag = $dag - $i;
if (strlen($newdag) == 1)
{
$newdag = '0'.$newdag;
}
$newmaand = $maand;
$newjaar = $jaar;
}
else
{
if ($maand == 01)
{
$newmaand = 12;
$newjaar = $jaar - 1;
}
else
{
$newmaand = $maand - 1;
if (strlen($newmaand) == 1)
{
$newmaand = '0'.$newmaand;
}
$newjaar = $jaar;
}
$dagenmaand = cal_days_in_month(CAL_GREGORIAN, $newmaand, $newjaar);
$newdag = $dagenmaand - ($i - $dag);
if (strlen($newdag) == 1)
{
$newdag = '0'.$newdag;
}
}
$datums[] = $newjaar.'-'.$newmaand.'-'.$newdag;
}
}
elseif ($soort == 'omhoog')
{
for ($i=0; $i<=$aantaldagen-1; $i++)
{
if ($dag + $i < (cal_days_in_month(CAL_GREGORIAN, $maand, $jaar)+1)) // wanneer de maand niet verandert, alleen de dagen optellen.
{
$newdag = $dag + $i;
if (strlen($newdag) == 1)
{
$newdag = '0'.$newdag;
}
$newmaand = $maand;
$newjaar = $jaar;
}
else
{
if ($maand == 12)
{
$newmaand = 01;
if (strlen($newmaand) == 1)
{
$newmaand = '0'.$newmaand;
}
$newjaar = $jaar + 1;
}
else
{
$newmaand = $maand + 1;
if (strlen($newmaand) == 1)
{
$newmaand = '0'.$newmaand;
}
$newjaar = $jaar;
}
$dagenmaand = cal_days_in_month(CAL_GREGORIAN, $maand, $jaar);
$newdag = ($i + $dag) - $dagenmaand;
if (strlen($newdag) == 1)
{
$newdag = '0'.$newdag;
}
}
$datums[] = $newjaar.'-'.$newmaand.'-'.$newdag;
}
}
return $datums;
}
?>
<?php function showdatesequence($date, $aantaldagen, $soort) { //date is de uitgangsdatum, in te voeren in het formaat yyyy-mm-dd //aantaldagen is het aantal dagen dat er bij geteld of vanaf getrokken moet worden, maximaal 30 dagen. //soort heeft de waarde 'omhoog' of 'omlaag', afhankelijk van of er opgeteld of afgetrokken moet worden. if ($soort == 'omlaag') { for ($i=0; $i<=$aantaldagen-1; $i++) { if ($dag - $i > 0) // wanneer de maand niet verandert, alleen de dagen aftrekken. { $newdag = $dag - $i; { $newdag = '0'.$newdag; } $newmaand = $maand; $newjaar = $jaar; } else { if ($maand == 01) { $newmaand = 12; $newjaar = $jaar - 1; } else { $newmaand = $maand - 1; { $newmaand = '0'.$newmaand; } $newjaar = $jaar; } $newdag = $dagenmaand - ($i - $dag); { $newdag = '0'.$newdag; } } $datums[] = $newjaar.'-'.$newmaand.'-'.$newdag; } } elseif ($soort == 'omhoog') { for ($i=0; $i<=$aantaldagen-1; $i++) { if ($dag + $i < (cal_days_in_month(CAL_GREGORIAN , $maand, $jaar)+1)) // wanneer de maand niet verandert, alleen de dagen optellen. { $newdag = $dag + $i; { $newdag = '0'.$newdag; } $newmaand = $maand; $newjaar = $jaar; } else { if ($maand == 12) { $newmaand = 01; { $newmaand = '0'.$newmaand; } $newjaar = $jaar + 1; } else { $newmaand = $maand + 1; { $newmaand = '0'.$newmaand; } $newjaar = $jaar; } $newdag = ($i + $dag) - $dagenmaand; { $newdag = '0'.$newdag; } } $datums[] = $newjaar.'-'.$newmaand.'-'.$newdag; } } return $datums; } ?>
Download code (.txt)
|
|
Stemmen |
Niet ingelogd. |
|