Avatar billede totalpc Seniormester
06. april 2009 - 11:32 Der er 2 kommentarer og
1 løsning

Hvordan tjekker jeg for korrekt format i dato fejl

Hej
Mine brugere skal indtaste en dato i formatet dd-mm-aaaa på mine hjemmeside. Hvordan tjekker jeg for at de skriver datoen i rigtigt format inden jeg smider det i db?

24-12-2009 OK
12-24-2009 Ikke ok
24-12-09 Ikke ok
24/12/2009 Ikke ok
osv...
Det er kun øverste format der er godkendt!
Avatar billede eagleeye Praktikant
07. april 2009 - 22:12 #1
Du kan lave en funktion som denne:

function CheckDate(strIn)
' function to validate date input
    dim objRE
    set objRE = New RegExp
    objRE.Pattern = "(0[1-9]|[12][0-9]|3[01])
  • (0[1-9]|1[012])[-](19|20)\d\d"
    objRE.Global = True
    CheckDate = objRE.test(strIn)
    set objRE = nothing
end function



Den bør måske kombineres med isData funtionen som findes i ASP.


dato= "24-12-2009"
if CheckDate(dato) AND isDate(dato) then
  ' Dato er Ok
else
  ' Dato er forkert
end if




Men du kan også anvendte year, month og day funktionerne til at formatere datoen så du ved den er 100% korrret formateret, samt du kan tillade folk benytter - eller / som skille tegn:

dato= "24-12-2009"
datoSQL = Day(dato) "-" & Month(dato) & "-" & Year(dato)
Avatar billede totalpc Seniormester
08. april 2009 - 10:13 #2
Hej
Tak for svaret. Første del forstår jeg, selvom jeg ikke forstår selve tjekket i funktion :)
Men den med year, month og day funktionen forstår jeg ikke helt.
Der kan jeg godt se at jeg kan formatere datoen selv, men hvor ved den fra at det første tal er dato og ikke måned fx?
Avatar billede eagleeye Praktikant
09. april 2009 - 17:49 #3
Selve funktionen bruger regular expression til at tjekke at strengen du får inde holder DD-MM-YYYY hvor DD skal være imellem 01 og 31, MM imellem 01 og 12, smat YYYY hvor YYYY skal være større end 1900 men det behøver vel ikke være en begrnsning i dit tilfæde??? 

function CheckDate(strIn)
' function to validate date input
    dim objRE
    set objRE = New RegExp
    objRE.Pattern = "(0[1-9]|[12][0-9]|3[01])
  • (0[1-9]|1[012])[-]\d\d\d\d"
    objRE.Global = True
    CheckDate = objRE.test(strIn)
    set objRE = nothing
end function


sleve funktion tjekke ikke på dato er gyldig eks: 31-02-2000. Det kan isDate bruges til.


Dato/tids funktionerne i ASP bruger serveres datao format så hvis serveren køre DK dato format vil den tolke datoen som DD-MM-YYYY.

Jeg har engang skrevet denne lille guide http://www.eksperten.dk/guide/31 angåede dato problem imellem ASP side og Access når man bruger en SQL sætning. Jeg ved ikke om den hjælper dig lidt mere.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester