var dag = 22 // tal for månedsdag (1..31) var maaned = 5 // tal for måned (1..12) var aar = 1902 // tal for årtal (fire cifre tak)
var dato o new Date( aar, maaned-1, dag ); if ( dag != dato.getDate() || maaned != (dato.getMonth()+1) ) { alert( "beklager, den dato findes ikke" ); }
phew... det er godt nok nogle dunkle regler for skudår! :-)
Her er hvad jeg er nået frem til (det burde virke så vidt jeg kan se, og gør det, så vidt jeg har testet) :
---8<---------- function validerDato(d,m,y) { if ((m=="01")||(m=="03")||(m=="05")||(m=="07")||(m=="08")||(m=="10")||(m=="12")) // lang måned { if ((d<1)||(d>31)) return false; } else if ((m=="04")||(m=="06")||(m=="09")||(m=="11")) // kort måned { if ((d<1)||(d>30)) return false; } else if (m=="02") // februar { aarSidenSkudår = y-1600; if ( (aarSidenSkudår%4) != 0) // alle ikke hvert 4. år er ikke skudår { if ((d<1)||(d>28)) return false; } else { if ( (aarSidenSkudår%100) != 0 ) // alle hver 4. år er ikke skudår alligevel, hvis de er hver 100. år { if ((d<1)||(d>29)) return false; } else { if ( (aarSidenSkudår%400) != 0 ) // med mindre de er hvert 400. år, hvor de er er skudår alligevel { if ((d<1)||(d>28)) return false; } else { if ((d<1)||(d>29)) return false; } } } } else { return false; } return true; } ---8<----------
Det kan da godt være at scriptet phoenixv refererer til er pænere end mit (og at han svarede før mig), men så vidt jeg kan se er mit script altså mere korrekt (ikke at fejlen er noget der vil være et stort problem).
100-års reglen siger at det alligevel ikke er skudår hvert 100. år - dvs. at f.eks. 1900 ikke er et skudår på trods af at det passer med 4-års reglen (med mindre det falder for 400-års reglen). Ergo findes f.eks. datoen 29-02-1900 ikke, men det fanger phoenixv's script ikke B-)
jakoba>> ja, det kan du selvfølgelig have ret i, men det er vel en smagssag. Anyway så har jakemedes afvist dit svar, så det var åbenbart ikke det han var efter. :|
At Jakemedes ikke accepterer Jakoba's svar er vel bare ignorance fra hans side. Selvfølgelig er Jakoba's nemmest (og dermed bedst). Det skulle måske bare udbygges, men så kan han jo bare sige det!
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.