Hallo Tweakers
We nemen een 5 textboxjes, waarvan 3 om een datum te vormen: [dd]-[mm]-[jjjj] en de andere twee om een x aantal jaren en maanden bij deze datum op te tellen: [mm] [jj]
Al vele uren ben ik met dit probleem bezig, maar mijn hersenen zitten in een loopje en ik ben staat om wat haren uit mijn hoofd te trekken. Mijn bedoeling is dat ik de maanden bij de gegeven datum op tel zonder dat de dagen doortellen naar de volgende maand. Als je bijvoorbeeld 31-1 hebt en je zou hier via de normale javascript manier
Ik heb de code al vele malen overhoop gegooid maar ik ben met deze lap code het dichtste in de buurt gekomen:
Via Google kwam ik uit bij de date.js library en moment.js, maar beiden libs geven mij niet de mogelijkheid om een x aantal maanden op een manier dat x ook x blijft. Wat javascript in feite doet is 30.3 dagen toevoegen aan een datum voor zover ik heb begrepen.
We nemen een 5 textboxjes, waarvan 3 om een datum te vormen: [dd]-[mm]-[jjjj] en de andere twee om een x aantal jaren en maanden bij deze datum op te tellen: [mm] [jj]
Al vele uren ben ik met dit probleem bezig, maar mijn hersenen zitten in een loopje en ik ben staat om wat haren uit mijn hoofd te trekken. Mijn bedoeling is dat ik de maanden bij de gegeven datum op tel zonder dat de dagen doortellen naar de volgende maand. Als je bijvoorbeeld 31-1 hebt en je zou hier via de normale javascript manier
JavaScript:
een maand bij optellen kom je uit op 2-3. Ik moet echter 28-2 of 29-2 hebben, afhankelijk van of het jaar een schrikkeljaar is.1
| datum.setMonth(datum.getMonth() + maand.value * 1 |
Ik heb de code al vele malen overhoop gegooid maar ik ben met deze lap code het dichtste in de buurt gekomen:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| function bereken_uitkeringsduur(maand, jaar) { if ((document.formulier.uitkeringsduur_maand.value != '' && IsNumeric(document.formulier.uitkeringsduur_maand.value) == true) || (document.formulier.uitkeringsduur_jaar.value != '' && IsNumeric(document.formulier.uitkeringsduur_jaar.value) == true) ) { var x = new Date(document.formulier.jaar1.value, document.formulier.maand1.value -1, document.formulier.dag1.value); if (maand != '' && maand != '0' && maand != '00') { x.setMonth(x.getMonth() + maand.value * 1); } if (jaar != '') { x.setFullYear(x.getFullYear() + jaar.value * 1); } document.forms['formulier'].maand2.value = x.getMonth(); if (x.getMonth() != (document.forms['formulier'].maand1.value * 1 + maand.value * 1)) { document.forms['formulier'].maand2.value = x.getMonth() - 1; var y = new Date(x.getFullYear(), x.getMonth() - 1, 0); document.forms['formulier'].dag2.value = y.getDate(); } else { document.forms['formulier'].dag2.value = x.getDate(); } document.forms['formulier'].jaar2.value = x.getFullYear(); } } |
Via Google kwam ik uit bij de date.js library en moment.js, maar beiden libs geven mij niet de mogelijkheid om een x aantal maanden op een manier dat x ook x blijft. Wat javascript in feite doet is 30.3 dagen toevoegen aan een datum voor zover ik heb begrepen.
