[JavaScript] Interval tussen twee datums

Pagina: 1
Acties:
  • 512 views sinds 30-01-2008
  • Reageer

  • TweakersOnly
  • Registratie: September 2000
  • Laatst online: 01:22
Voor het berekenen van het aantal dagen tussen een begin- en einddatum maak ik gebruik van JavaScript. Het is de bedoeling dat deze dagen worden gesplitst naar het dagnummer (dus 0 = zondag, 1 = maandag enz.). De code die ik bedacht heb, is:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<script language="Javascript">
<!--

function datum(strDat){
    I = strDat.indexOf('-');
      J = strDat.lastIndexOf('-');  
      strDag = strDat.substring(0,I);
      strMaand = strDat.substring(I+1,J);
      strJaar = strDat.substring(J+1);  
      return(new Date(strJaar,strMaand-1,strDag,00,00,00));
}

function add_days(adate,days) {
     return new Date(adate.getTime() + (days * 86400000));
}


function Calc_nUur(){  
      var fte = new Array(6);
  
      fte[0] = 0;
      fte[1] = 4;
      fte[2] = 4;    
      fte[3] = 4;
      fte[4] = 4;
      fte[5] = 4;
      fte[6] = 0;
  
     var Datum = datum(document.forms[0].Begindatum.value);
      var EindDatum = datum(document.forms[0].Einddatum.value);
      EindDatum = add_days(EindDatum,1); 
      nUur = 0;
 
      while(Datum.toString() != EindDatum.toString()){   
           nUur = nUur + fte[Datum.getDay()]; 
        Datum = add_days(Datum,1);    
      }  
      document.forms[0].AantalUur.value = nUur;
}
//-->
</script>

Bovenstaande code impliceert een urenrooster, voor elke dag tussen begin- en einddatum wordt het totaal aantal uren verhoogd met de waarde uit de bijbehorende array fte.

Als ik een tijdsinterval pak tussen 01-04-2002 en 05-04-2002 wordt de berekening foutloos uitgevoerd. Kies ik de periode tussen 29-03-2002 en 01-04-2002 dan kom ik in een oneindige lus terecht. De periode tussen 29-04-2002 en 02-05-2002 wordt daarentegen ook weer probleemloos uitgevoerd. Wat heb ik verkeerd gedaan.

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 18-11 16:53

D2k

[topic=397053/1/25]
P&W -> W&G

Doet iets met Cloud (MS/IBM)


  • TweakersOnly
  • Registratie: September 2000
  • Laatst online: 01:22
OK, nadere bestudering vand e source leert dat de fout lbij het begin van de zomer- en wintertijd ligt. Hierin houdt ik geen rekening in de functie add_days. Van een collega hoorde ik echter dat er een speciale functie binnen Javascript was, die gewoon een dag bij een bepaalde datum optelde ipv (moeilijk,moeilijk) aantal milliseconden. Weet iemand iets van deze functie?