Avatar billede md_craig Nybegynder
31. juli 2003 - 13:44 Der er 13 kommentarer og
2 løsninger

Regne alder ud.

Jeg skal bruge en "funktion" der kan regne ens alder ud..

Jeg havde egentlig regnet med at jeg bare kunne have brugt Datediff...

Men det går galt...

Fx retunere den 21 mellem disse datoer:
03-09-1982 og 31-08-2003

Ved ikke om det er fordi den kun kigger på forskellen mellem 1982 og 2003 hvilket jo er 21... eller hvad det er der går galt... men hvad gør jeg så ???

Her er lige 2 eksempler...

03-09-1982 og 31-08-2003 = 21 - Falsk
03-03-1982 og 31-08-2003 = 21 - Sandt
Avatar billede medions Nybegynder
31. juli 2003 - 13:45 #1
DateDiff("yyyy", Dato1, Dato2)

Virker da fint!

//>Rune
Avatar billede tuctoh Nybegynder
31. juli 2003 - 13:46 #2
at regne selve alderen ud er ikke nemt... du vil få problemer med skudår etc...

jeg sidder ikke selv inde med koden til det, men kan huske andre diskutioner hvor det har givet store problemer
Avatar billede medions Nybegynder
31. juli 2003 - 13:47 #3
Du kan gøre sådan her:

  Function AgeDate(dtmDate)
      dtmDay = Left(dtmDate, 2)
    dtmMonth = Mid(dtmDate, 3, 2)
    dtmYear = Right(dtmDate, 4)
   
    dtmDate = dtmDay & "-" & dtmMonth & "-" & dtmYear
    AgeDate = DateDiff("YYYY", DateAdd("YYYY", 1, dtmDate), Date())
  End Function

dtmDate = "14-09-85"
Msgbox(AgeDate(dtmDate))

//>Rune
Avatar billede md_craig Nybegynder
31. juli 2003 - 13:48 #4
Medions >>>

Nej... det er så det det ikke gør... for mig hvertfald...
Avatar billede medions Nybegynder
31. juli 2003 - 13:49 #5
Har du prøvet den funktion jeg gav dig?

//>Rune
Avatar billede md_craig Nybegynder
31. juli 2003 - 13:49 #6
hov... nu afviste den dit andet svar... uden jeg nåede at kigge på det... fordi du havde submitet det lige inden mig...

kigger lige på det..
Avatar billede medions Nybegynder
31. juli 2003 - 13:55 #7
Hvis du vil ha' differencen mellem de 2 datoer så kan du også gøre sådanher:

  Function AgeDate(dtmDate1, dtmDate2)
    dtmDay1 = Left(dtmDate1, 2)
    dtmMonth1 = Mid(dtmDate1, 3, 2)
    dtmYear1 = Right(dtmDate1, 4)
   
    dtmDate1 = dtmDay & "-" & dtmMonth & "-" & dtmYear

    dtmDay2 = Left(dtmDate2, 2)
    dtmMonth2 = Mid(dtmDate2, 3, 2)
    dtmYear2 = Right(dtmDate2, 4)
   
    dtmDate2 = dtmDay & "-" & dtmMonth & "-" & dtmYear

    AgeDate = DateDiff("YYYY", DateAdd("YYYY", 1, dtmDate1), DateAdd("YYYY", 1, dtmDate2)
  End Function

dtmDate1 = "14-09-85"
dtmDate2 = "14-09-80"
Msgbox(AgeDate(dtmDate1, dtmDate2))

//>Rune
Avatar billede md_craig Nybegynder
31. juli 2003 - 14:01 #8
Den kommer konstant med at "typerne passer ikke sammen"
Avatar billede eagleeye Praktikant
31. juli 2003 - 14:02 #9
sådan her.


  maaned = Month( rs("fødslesdatoKolonne") )
  dag = Day(rs("fødslesdatoKolonne"))
  alder = Year(date)-Year(rs("fødslesdatoKolonne"))
  if Month(Date)<maaned OR (Month(Date)=maaned AND Day(date)<dag) then
    alder=alder-1
  end if
Avatar billede eagleeye Praktikant
31. juli 2003 - 14:03 #10
Lidt pænere skrevet sådan her:


fddato = rs("fødslesdatoKolonne")
maaned = Month(fddato)
dag = Day(fddato)
alder = Year(date)-Year(fddato)
if Month(Date)<maaned OR (Month(Date)=maaned AND Day(date)<dag) then
  alder=alder-1
end if
Response.write alder
Avatar billede medions Nybegynder
31. juli 2003 - 14:04 #11
Ahh min fejl!

  Function AgeDate(dtmDate)
      dtmDate = Replace(dtmDate, "-", "")
      dtmDay = Left(dtmDate, 2)
    dtmMonth = Mid(dtmDate, 3, 2)
    dtmYear = Right(dtmDate, 4)
   
    dtmDate = dtmDay & "-" & dtmMonth & "-" & dtmYear
    AgeDate = DateDiff("YYYY", DateAdd("YYYY", 1, dtmDate), Date())
  End Function

dtmDate = "14-09-85"
Msgbox(AgeDate(dtmDate))

Sådan

//>Rune
Avatar billede md_craig Nybegynder
31. juli 2003 - 14:09 #12
Hmmm... tror jeg er ved at blive doven...
Havde selv en lidt som EagleEyes (med Datediff for alder dog...)

Men jeg mente ikke det kunne passe man skulle skrive så meget for så lidt...
;o/

Er det første tegn på dovenskab ???
Avatar billede eagleeye Praktikant
31. juli 2003 - 14:12 #13
LOL ja det er det ;)

Da dateDiff giver hele år imellem to datoer og ikke "alderen" skal man tjekke om personen har haft fødselsdag og så trække 1 fra hvis ikke.


men du kan skrive det sådan her:


fddato = rs("fødslesdatoKolonne")
alder = Year(date)-Year(fddato)
if Month(Date)<Month(fddato) OR (Month(Date)=Month(fddato) AND Day(date)<Day(fddato)) then
  alder=alder-1
end if
Response.write alder
Avatar billede eagleeye Praktikant
31. juli 2003 - 14:12 #14
Andre god ider til udregning kan ses her:
http://www.eksperten.dk/spm/378519
Avatar billede md_craig Nybegynder
31. juli 2003 - 14:16 #15
eagleeye >>>

Nej... det ved jeg godt...
Men der kunne nu godt have været en Funktion til at få antal hele år mellem 2 datoer... det ville jo så kunne bruges til føsdag...
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