Geldigheid testen van een datum-aanduiding

Hieronder zie een een formuliertje met één tekstveld. Als je daar een Datum-aanduiding invult en dan op de knop Test! drukt, komt er een alert op het scherm die zegt of de datum correct is gevormd of niet.

Vul hier een datum-aanduiding (maand dag jaar) in:
Gebruik een van de formats die verderop is genoemd!
 

Op deze pagina staat beschreven hoe je dat aanpakt. De code staat onderaan deze bladzijde. Je kunt hem ook downloaden voor je eigen gebruik.

Gebruik:

De code ziet er als volgt uit:
 
(Zet dit in de <HEAD>).

<script>
function TestTheDate() {
// Check de juistheid van de datum-aanduiding. Dit gebeurt gedeeltelijk met een Reguliere Expressie.
  if (VerifyDate_check(document.f.t.value)) {
    window.alert('De opgegeven datum-aanduiding is correct gevormd...')
  } else {
    window.alert('De opgegeven datum-aanduiding is NIET correct gevormd!')
    document.f.t.focus();
  }
}
 
function VerifyDate_check(str) {
  str=str.replace(/(^\s*)|(\s*$)/g, "");
  var a = new Date(str);
  var b = new Array(), c = new Array();
  var d = new Array("january","february","march","april","may","june","july","auguts","september",
    "october","november","december");
  if (isNaN(a)) { // Als de string geen goede-datum-tijd aanduiding is,
    wordt a Not-a-Number
    return false;
  } else { // String is correct gevormd, kijk of de datum goed is!
    Jaartal is voor deze check onbelangrijk
    b[0] = a.getMonth() + 1;
    b[1] = a.getDate();
    if (str.match(' ') && str.match(',')) {
      c[0] = str.substring(0,str.indexOf(' ',0));
      c[0] = c[0].toLowerCase();
      c[1] = str.substring(str.indexOf(' ',0)+1,str.indexOf(',',0));
      c[2] = str.substring(str.indexOf(',',0)+1,str.length);
      for (i=0; i<12; i++)
        if (c[0] == d[i]) c[0] = escape(i + 1); // dit is een string, nog geen integer
    } else if (str.match('-') && !str.match('/-')) {
      c = str.split('-',-1);
    } else if (str.match('/')) {
      c = str.split('/',-1);
    }
    // array c is drie posities...
    if (c.length != 3) return false;
 
 // Strip overbodige spaties, maak integers >0 voor dag en maand
    for (i=0; i<2; i++) {
      c[i] = c[i].replace(/(^\s*)|(\s*$)/g, "");
      c[i] = Math.abs(parseInt(c[i]));
      b[i] = Math.abs(parseInt(b[i]));
    }
    // Eindcontrole
    for (i=0; i<2; i++)
      if (b[i] != c[i]) return false;
    return true;
  }
}
</script>
(Zet dit in de <BODY>, op de plaats waar het formulier moet komen)
<form action="JavaScript:TestTheDate();" name="f" id="f">
<table border="1" cellspacing="1" cellpadding="5" align="center" bgcolor="#DDFFDD" frame="box" rules="none"><tr>
<td colspan="2" align="center">Vul hier een datum-aanduiding (<i>maand dag jaar</i>) in:<br>
<input type="text" name="t" size="30" maxlength="50"></td>
</tr><tr>
<td align="center"><input type="submit" value="   Test!   "></td>
<td align="center"><input type="reset" value="Opnieuw..."></td></tr></table></form>

Downloaden:
 
Druk op de knop: Download deze code  File: voorb152.zip, 1276 bytes.

Opmerking:
Een script voor het overzetten van het Nederlandse naar het Engelse datum-formaat is beschikbaar: Datum formaat omzetten

 
terug

html-152; Laatste wijziging: 27 april 2020