Springe over bestemte datoer
Jeg har en funktion, der udregner 3 (532, 531, 530) nye datoer ud fra en oprindelsesdato (533). De ligger med et fast interval imellem sig, men tager ikke højde for ferie/helligdage samt weekender.Dette skal jeg have hjælp til at lave.
Jeg har lavet en administratordel, hvor der kan indtastes nogle datoer, som der skal springes over, f.eks. helligdage.
Funktionen som der ser ud nu:
function performBeregn() {
var kalender = new Array();
<?php
$kalender = array();
$query = "SELECT * FROM kalender ORDER BY dato DESC";
$sql = mysql_query($query) or die(mysql_error);
while ($foo = mysql_fetch_array($sql)){
$kalender[$foo['id']]= sqltoalmdate($foo['dato']);
?>
kalender[<?php echo $foo['id'];?>] = new String('<?php echo sqltoalmdate($foo['dato']);?>');
<? }
?>
//alert(String(kalender[1]));
//alert('<?php echo sizeof($kalender);?>');
for (i=0; i<ds.length; i++) {
if (ds[i].type == "text") ds[i].value = ds[i].value.replace(',', '.');
}
var s = ds.r533.value;
if (ds.r533.value != ""){ //Hvis dato ikke er tom udregn de andre datoer, mangler tjek for tekst
var dateArray = s.split('-');
sdate = new Date(takeYear(dateArray[2]),dateArray[1]-1,dateArray[0]);
var adate = new Date(sdate.getTime() - (readVal(ds.r533a.value) * 86400000));
var bdate = new Date(sdate.getTime() - ((readVal(ds.r533a.value)+readVal(ds.r532a.value)) * 86400000));
var cdate = new Date(sdate.getTime() - ((readVal(ds.r533a.value)+readVal(ds.r532a.value)+readVal(ds.r531a.value)) * 86400000));
ds.r533.value = missingZero(sdate.getDate()) + '-' + missingZero((sdate.getMonth()+1)) + '-' + sdate.getFullYear();
ds.r532.value = missingZero(adate.getDate()) + '-' + missingZero((adate.getMonth()+1)) + '-' + adate.getFullYear();
ds.r531.value = missingZero(bdate.getDate()) + '-' + missingZero((bdate.getMonth()+1)) + '-' + bdate.getFullYear();
ds.r530.value = missingZero(cdate.getDate()) + '-' + missingZero((cdate.getMonth()+1)) + '-' + cdate.getFullYear();
ds.r533b.value = getWeekNumber(sdate);
//ds.r533b.value;
//konvertering af dato til sqldato
var dato = s.split('-');
ds.r533c.value = dato[2] + "-" + dato[1] + "-" + dato[0];
return false;
}
}
Datoen 532 ligger altså f.eks. 28 dage før end 533, og der skal altså laves så weekender og forbudte datoer (helligdage og ferier) ikke regnes med, så det skal altså være 28 arbejdsdage og ikke kalenderdage.
