Har en kod som skriver ut hur många år man är och när man fyller år skriver den ut Grattis, x år och annars bara årtalet. Men när det har gått en dag så det är dagen efter sin födelsedag så är man bara så gammal som man var innan man fyllde år! Samma sak gäller alla dagar efteråt. Vad har jag gjort för fel?
<%
FDT = "1980-09-20"
Dag = Day(date)
If Len(Dag) = 1 Then
Dag = "0" & Dag
Else
Dag = Dag
End If
Man = Month(date)
If Len(Man) = 1 Then
Man = "0" & Man
Else
Man = Man
End If
Function Birth(str)
res = DateDiff("yyyy", str, date())
If Cint(Man) =< Mid(str,6,2) AND Cint(Dag) < Right(str,2) Then res=res-1
Birth = res
End Function
If Cint(Right(FDT,2)) = Cint(Dag) And Cint(Mid(FDT,6,2)) = Cint(Man) Then%>
GRATTIS, <%=Birth(FDT)%> år
<%Else%>
<%=Birth(FDT)%> år
<%End If%>
Hmm, den visade visst ändå samma ålder när man fyllde år! Nån som vet hur jag ska skriva? Kanske denna är bättre att bygga på men det visar ju oxå fel :(
<%
FDT = Cdate("2000-09-19")
Function Birth(str)
res = DateDiff("yyyy", str, date())
If Month(date) =< Month(str) AND Day(date) < Day(str) Then res=res-1
Birth = res
End Function
If Cint(Day(FDT)) = Cint(Day(date)) And Cint(Month(FDT)) = Cint(Month(date)) Then%>
GRATTIS, <%=Birth(FDT)%> år
<%Else%>
<%=Birth(FDT)%> år
<%End If%>
If Month(FDT) = Month(Date) AND Day(FDT) = Day(Date) Then
Response.Write "Grattis, " & Year(Date) - Year(FDT) & " år."
Else
Reponse.Write Year(FDT)
End If
Den visar + 1 hela tiden! Annars verkar det stämma! Testa med olika födelsedagar så ser du:
dteBirth = "1980-09-18"
dteBirth = "1980-09-19"
dteBirth = "1980-09-20"
Ajj... det beror nog på att jag har satt två större än åt fel håll så att säga :)
If Month(dteBirth) < Month(dteToday) Then intYears = intYears + 1
If Month(dteBirth) = Month(dteToday) And Day(dteBirth) <= Day(dteToday) Then intYears = intYears + 1
Men när jag ställer att man fyller år den 18 sept (född 1980) så är man 24 år före och på dagen men efter är man 23 åt. Blire inte så för dig med sista koden?