---
title: "Födelsedag"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/86421-födelsedag"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Asa"
published: "2003-09-19T10:46:06.000Z"
updated: "2003-09-19T12:09:49.000Z"
replies: 16
views: 324
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/86421-födelsedag"
---

# Födelsedag

## #1 — Asa, 2003-09-19T10:46Z

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%>
```

Permalänk: https://www.webforum.nu/p/86421

## #2 — Asa, 2003-09-19T10:51Z

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%>
```

Permalänk: https://www.webforum.nu/p/1162563

## #3 — Engine^, 2003-09-19T10:57Z

Jag skulle nog lösa det såhär...

```
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
```

Permalänk: https://www.webforum.nu/p/1162568

## #4 — Asa, 2003-09-19T11:04Z

Har jag bara det så stämmer det ju ej! Vill ha precis på dagen!

Permalänk: https://www.webforum.nu/p/1162582

## #5 — Engine^, 2003-09-19T11:07Z

**red.**

```
If Month(FDT) = Month(Date) AND Day(FDT) = Day(Date) Then
  Response.Write "Grattis, "
End If

Response.Write Year(Date) - Year(FDT) & " år."
```

Permalänk: https://www.webforum.nu/p/1162587

## #6 — Asa, 2003-09-19T11:11Z

Men med den koden är man ex 23 år från 1 januari 2003. Man ska bli det ex 19 sept 2003.

Permalänk: https://www.webforum.nu/p/1162589

## #7 — Engine^, 2003-09-19T11:11Z

Jo, jag märkte just det när jag testade litegrann... ska se om jag inte kommer på något ;)

Permalänk: https://www.webforum.nu/p/1162591

## #8 — Asa, 2003-09-19T11:15Z

Tackar att du vill hjälpa till :)

Permalänk: https://www.webforum.nu/p/1162592

## #9 — Engine^, 2003-09-19T11:32Z

```
dteBirth = [i]födelsedag[/i]
dteToday = Date
intYears = Year(dteToday) - Year(dteBirth)

If Month(dteBirth) = Month(dteToday) And Day(dteBirth) = Day(dteToday) Then Response.Write "Grattis, "

If Month(dteBirth) > Month(dteToday) Then intYears = intYears + 1
If Month(dteBirth) = Month(dteToday) And Day(dteBirth) >= Day(dteToday) Then intYears = intYears + 1

Response.Write intYears & " år."
```

Kan det där ha blivit rätt månne?

**red.**
Det kan behövas lägga till en koll för dom som är födda den 1:a Januari... en tredje If-sats

```
If Month(dteBirth) = 1 And Day(dteBirth) = 1 Then intYears = intYears - 1
```

Permalänk: https://www.webforum.nu/p/1162609

## #10 — Asa, 2003-09-19T11:37Z

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"

Permalänk: https://www.webforum.nu/p/1162615

## #11 — Asa, 2003-09-19T11:40Z

Ahh, såg din redigering! SKa testa! Det visar iallafall 1 år för mycket för mig! ANnars stämde det fint.

Permalänk: https://www.webforum.nu/p/1162622

## #12 — Engine^, 2003-09-19T11:43Z

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
```

Så borde det ju bli...

Permalänk: https://www.webforum.nu/p/1162625

## #13 — Asa, 2003-09-19T11:46Z

Tusan! Det bara strular :( Hur funkar det för dig då?

Permalänk: https://www.webforum.nu/p/1162626

## #14 — Engine^, 2003-09-19T11:58Z

Jodå, nu fungerade det som jag hade tänkt... och så här ser det då ut

```
dteToday = Date
dteBirth = ...
intYears = Year(dteToday) - Year(dteBirth)

If Month(dteToday) = Month(dteBirth) And Day(dteToday) = Day(dteBirth) Then Response.Write "Grattis, "
If Month(dteToday) > Month(dteBirth) Or (Month(dteToday) = Month(dteBirth) And Day(dteToday) >= Day(dteBirth)) Then intYears = intYears + 1

Response.Write intYears & " år."
```

Permalänk: https://www.webforum.nu/p/1162630

## #15 — Asa, 2003-09-19T12:03Z

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?

Permalänk: https://www.webforum.nu/p/1162633

## #16 — Engine^, 2003-09-19T12:08Z

Jag testade förvisso med 1977-09-18, 19 och 20 och då fick jag inga fel.

Permalänk: https://www.webforum.nu/p/1162639

## #17 — Asa, 2003-09-19T12:09Z

Hmm, okej! Men då får jag väl testa lite mer då! Men tackar för all hjälp!

Permalänk: https://www.webforum.nu/p/1162641

---

Tråden på webben: https://www.webforum.nu/amne/asp/86421-födelsedag
