Jimmy skrev:
>> function getYear(d) {
>> return (d < 1000) ? d + 1900 : d;
>> }
>
> Hvis nu man skriver 29-01-01, i stedet for 29-01-2001, vil det
> så ikke være det forkerte årstal den returnerer?
Jo. Man kan selvfølgelig skrive 2000 i stedet, men så giver det
problemer hvis der er nogen der mener 19xx. I det aktuelle script
er funktionen dog overflødig - se nedenfor.
>
>> function testDate(theDate){
>> var reg = /(\d{1,2})\W(\d{1,2})\W(\d{4})/;
Udtrykket mellem de to skråstreger er et regulært udtryk (regex).
\d betyder et ciffer og efterstillede tal i tuborgklammer bestemmer
hvor mange cifre der må være. \d{4} betyder derfor præcis fire
cifre, mens \d{1,2} betyder mindst 1 og højst to cifre.
\W betyder et ikke-ord-tegn (ikke et tal eller et bogstav). Her er
det i praksis det samme som et skilletegn.
Udtrykket "\d{1,2}\W\d{1,2}\W\d{4}" skal derfor læses:
1 eller 2 cifre + et skilletegn + 1 eller 2 cifre +
et skilletegn + 4 cifre.
Parenteserne bruges til at gemme værdier i variable, sådan så man
kan bruge dem senere. For hver parentes oprettes der en variabel
med navnet $x, hvor x er et tal der afspejler parentesens placering
i udtrykket. I eksemplet herover er $1 derfor den tekst der matches
af det første \d{1,2} (dvs. datoen), $2 er tilsvarende måneden og
$3 er årstallet.
>> var svar = false;
>> if (reg.test(theDate)){
..test-metoden undersøger om argumentet (datoen) passer med det
format der er angivet i regex'et. Der returneres sandt eller falsk.
>> var fdato = theDate.replace(reg, "$1-$2-$3");
Her omformes datoen så til et fast format.
>> var dArray = fdato.split("-");
Og split-metoden skiller så datoen i de tre dele dag, måned og år.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på
http://usenet.dk/netikette/citatteknik.html