Avatar billede krosser Nybegynder
02. juli 2004 - 11:39 Der er 9 kommentarer og
2 løsninger

Datoformat fra en tekststreng og tjek om den er valid

Hej

Fra et tekstfelt modtager jeg følgende tekststreng format 2004-12-06
altså yyyy-mm-dd.

Jeg ønsker at tjekke om det er en valid date.
den nemme ville at bruge isdate() men det lader til at hvis der f.eks står 2004-13-06 så kan den sige nå ja han mener 13/06/2004
og det er jo ikke meningen og dermed gyldig dato selvom det ikke er tilfældet.

Jeg har testet en del og det virker som om at for at konvertere en tekststreng til en dato så er man afhængig at computerens datoindstillinger i regional settings.

Mit script skal fungere uanset hvilke settings der er.

Er der nogen som har en løsning på dette?
Kan man evt bruge format og så på en eller anden måde se hvilke regional settings der er på computeren og så formatere den derefter ?
02. juli 2004 - 11:44 #1
Min erfaring er, at hvis man bruger Format(Dato, "yyyy-dd-mm"), så kan VB finde ud af det korrekt.
Avatar billede terry Ekspert
02. juli 2004 - 11:45 #2
do you really mean yyyy-dd-mm Thomas?
02. juli 2004 - 11:47 #3
nope? :o)

Format(Dato, "yyyy-mm-dd")
Avatar billede krosser Nybegynder
02. juli 2004 - 11:53 #4
ups :-) I mean yyyy-mm-dd
Avatar billede terry Ekspert
02. juli 2004 - 11:59 #5
Try something like this

dim dt as Date

On Error Resume Next
   
    dt = (CDate("2004-13-06"))
    If Err.Number <> 0 Then msgbox "Date invalid"
Avatar billede krosser Nybegynder
02. juli 2004 - 12:54 #6
kan man få fat i format på dato på en maskine på en nem måde og derefter formattere sin tekststreng efter det ?
Avatar billede terry Ekspert
02. juli 2004 - 13:03 #7
THis wasnt the original question!
Avatar billede krosser Nybegynder
02. juli 2004 - 13:20 #8
Tak for jeres kommentarer :-) og god weekend.
02. juli 2004 - 13:22 #9
tak :o)

Jeg tror ikke, at der er en nem måde at få fat i dine regional settings på. Du skal nok have fat i noget API....
Avatar billede joern Nybegynder
03. juli 2004 - 14:21 #10
Hej.

Man kan teste på formatet af 'now', det viser datoen på den måde der er sat i international i kontrolpanelet.

If year(now) = left(now,4) then msgbox("årstal er først med 4 cifre")

If month(now) = mid(now,5,2) then msgbox("måned i i midten med 2 cifre")

o.s.v.

M.v.h.  Jørn
Avatar billede terry Ekspert
03. juli 2004 - 14:54 #11
Hi joern,
I actually looked at a similar solution. Problem with using
month(now) is that it returns an integer Example: 7 (july) but mid(now,5,2) returns a string '07'


So this would be better I think!
If month(now) = cint(mid(now,5,2)) then msgbox("måned i i midten med 2 cifre")
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
Kategori
Kurser inden for grundlæggende programmering

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