---
title: "När infaller påskdagen"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/81467-när-infaller-påskdagen"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "plelkes"
published: "2003-07-07T07:05:08.000Z"
updated: "2003-08-08T09:48:59.000Z"
replies: 28
views: 1141
page: 1
pages: 2
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/81467-när-infaller-påskdagen"
---

# När infaller påskdagen

_Sida 1 av 2._

## #1 — plelkes, 2003-07-07T07:05Z

Hej,
har försökt mig på ett litet funktion som skall beräkna fram datumet som påskdagen infaller på.
Följande kod har jag snickrat ihop

```
<%
Session.LCID = 1053
Dim strDate, dteDate, c, n, k, i, j, l, m, d
strDate = Request.Form("year")
dteDate = CDate(strDate)
function ge(easterd)	
        c = dteDate/100
	n = dteDate - 19 * (dteDate/19)
	k = (c - 17) / 25
	i = c - (c/4) - (c - k )/3 + (19*n) + 15
	i = i -30*(i/30)
	i = i - (i/28)*(1-(i/28)*(29/(i + 1))*((21 - n))/11)
	j = dteDate + (dteDate/4) + i + 2 - c + (c/4)
	j = j - 7 * (j / 7)
	l = i - j
	m = 3 + ( 1 + 40)/44      '// månaden
	d = 1 + 28 - 31 * ( m/4) '// dagen
End function 	
Response. Write "Påskdagen infaller:  & easterd
%>
```

 
Med ovanstående kod får jag inget skärmutskrift av påskdagen.
Å andra sidan får inte jag ngt felutskrift heller... :h

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

## #2 — @nders, 2003-07-07T07:11Z

Utan att veta om logiken stämmer eller inte: du kallar aldrig på funktionen, och funktionen returnerar ingenting. Den borde inte heller ta någon parameter, eftersom du inte ska använda något invärde i funktionen.

Mvh

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

## #3 — plelkes, 2003-07-07T07:16Z

> kallar aldrig på funktionen, och funktionen returnerar ingenting

 Trodde att jag gjorde det med

```
Response. Write "Påskdagen infaller:  & easterd
```

 Hur borde det vara?

> Den borde inte heller ta någon parameter, eftersom du inte ska använda något invärde i funktionen.

 Hur menar du? Jag har ju en formulär, där man väljer år

```
strDate = Request.Form("year")
dteDate = CDate(strDate)
```

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

## #4 — dekt, 2003-07-07T07:18Z

Response.Write ge()

Och ta bort parametern i funktionen

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

## #5 — plelkes, 2003-07-07T07:23Z

Menar ni så här:

```
<%
Session.LCID = 1053
Dim strDate, dteDate, c, n, k, i, j, l, m, d
strDate = Request.Form("year")
dteDate = CDate(strDate)
function easterd()	
        c = dteDate/100
	n = dteDate - 19 * (dteDate/19)
	k = (c - 17) / 25
	i = c - (c/4) - (c - k )/3 + (19*n) + 15
	i = i -30*(i/30)
	i = i - (i/28)*(1-(i/28)*(29/(i + 1))*((21 - n))/11)
	j = dteDate + (dteDate/4) + i + 2 - c + (c/4)
	j = j - 7 * (j / 7)
	l = i - j
	m = 3 + ( 1 + 40)/44
	d = 1 + 28 - 31 * ( m/4)
End function 	
Response. Write "Påskdagen infaller:  " & easterd()
%>
```

 
Tyvärr samma nedslående resultat

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

## #6 — @nders, 2003-07-07T07:27Z

Du måste returnera något från funktionen också. Nu gör du bara en massa uträkningar som inte används till något.

Jag vet inte heller vilket värde det är tänkt att du vill ha från funktionen, men det vet säkert du.

Mvh

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

## #7 — @nders, 2003-07-07T07:29Z

Förresten, ska inte ettan i raden **m = 3 + ( 1 + 40)/44** vara ett l? Då förstår jag lite mer, och det ser ut att vara d du vill returnera från funktionen. Eller?

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

## #8 — ekke_t, 2003-07-07T07:32Z

Returnerar gör du med

```
easterd = d
```

sist i din funktion

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

## #9 — dekt, 2003-07-07T07:38Z

Du har bara kopierat funktionen utan att ha koll på vad den gör, eller hur? :-)

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

## #10 — plelkes, 2003-07-07T07:42Z

> Du har bara kopierat funktionen utan att ha koll på vad den gör, eller hur? :-)

 
Nej det stämmer inte. Jag har hittat ett "algoritm" som månad och dag för påskens infallande om man har året.
Jag trodde i min nybörjar enfald att jag skall använda mig av en funktion.
Men detta är mitt första försök med att konstruera en funktion

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

## #11 — dekt, 2003-07-07T08:37Z

En funktion tar (oftast) emot ett eller flera värden och returnerar ett annat.

Exempel: 

```
Function Addera(a, b)
	Addera = a + b
End Function

Response.Write Addera(3, 5)
```

Detta ger utskriften 8.

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

## #12 — plelkes, 2003-07-07T08:40Z

dekt: OK jag fattar.
Vilken konstruktion rekomenderar du/ni i mitt fall?

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

## #13 — dekt, 2003-07-07T08:56Z

Det beror på vilka värden du vill hämta från funktionen, ju! :-) Säker på att du fattar?

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

## #14 — plelkes, 2003-07-07T08:58Z

jag fattar det du skrev:

> En funktion tar (oftast) emot ett eller flera värden och returnerar ett annat. 
> 
> Exempel: 
> 
> kod:--------------------------------------------------------------------------------Function Addera(a, b)
> 	Addera = a + b
> End Function
> 
> Response.Write Addera(3, 5)--------------------------------------------------------------------------------
> 
> 
> Detta ger utskriften 8.

 Men vet inte hur jag skall anpassa till mina behov :x

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

## #15 — dekt, 2003-07-07T08:58Z

om m = månad och d = dag borde du fixa ett slutgiltigt return-värde för funktionen, t.ex. m & "-" & d

Sen skriva ut strDate & "-" & easterd()

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

## #16 — plelkes, 2003-07-07T09:03Z

som sagt så är jag hellt nybörjare på funktioner..

> slutgiltigt return-värde för funktionen, t.ex. m & "-" & d

 Hur skulle detta se ut i "min" funktion?

En annan fråga - kan man i ASP skriva formlerna som jag gjorde?

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

## #17 — Denniz PoP, 2003-07-07T09:06Z

```
<%
Session.LCID = 1053
Dim strDate, dteDate, c, n, k, i, j, l, m, d
strDate = Request.Form("year")
dteDate = CDate(strDate)
function easterd()	
        c = dteDate/100
	n = dteDate - 19 * (dteDate/19)
	k = (c - 17) / 25
	i = c - (c/4) - (c - k )/3 + (19*n) + 15
	i = i -30*(i/30)
	i = i - (i/28)*(1-(i/28)*(29/(i + 1))*((21 - n))/11)
	j = dteDate + (dteDate/4) + i + 2 - c + (c/4)
	j = j - 7 * (j / 7)
	l = i - j
	m = 3 + ( 1 + 40)/44
	d = 1 + 28 - 31 * ( m/4)
	easterd = m & "-" & d
End function 	
Response. Write "Påskdagen infaller:  " & easterd()
%>
```

Ungefär såhär skulle den kunna se ut, men jag vet inte riktigt vilka returvärden du vill ha. Det finns ju ett antal variabler att välja mellan. Du kanske skulle ta och se över funktionen och göra den enklare?

EDIT: Okey, jag testade funktionen och den gav lite konstiga siffror iaf.

Tyvärr fattar jag inte riktigt vad alla uträkningar gör. Jag tycker att det ser lite väl krångligt ut. 

När inträffar påskdagen? Är det någon speciell dag på någon speciell vecka? Skall se om jag kan lösa något.

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

## #18 — plelkes, 2003-07-07T09:22Z

Håller med om att funktionen returnerar konstiga siffror. Men eftersom jag inte är ngn stjärna på matter, har jag svårt att ändra i formeln. Hittade det hela [på denna sida](http://aa.usno.navy.mil/faq/docs/easter.html) 
Mitt syfte är att hitta ett sätt att räkna ut datumet för påskens infallande. För att sedan därifrån kunna ta reda på vissa andra helgdagars infallande

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

## #19 — dekt, 2003-07-07T09:44Z

Testa:

```
<%

Session.LCID = 1053
Dim c, n, k, i, j, l, m, d

function entillnolla(x)
  if x < 10 then
    entillnolla = "0" & x
  else
    entillnolla = x
  end if
end function

function easterd(y)	
    c = y \ 100
    n = y - 19 * (y \ 19)
    k = (c - 17) \ 25
    i = c - c \ 4 - (c - k ) \ 3 + 19 * n + 15
    i = i - 30 * ( i \ 30 )
    i = i - ( i \28 ) * ( 1 - ( i \ 28 ) * ( 29 \ ( i + 1 )) * ((21 - n) \ 11))
    j = y + y \ 4 + i + 2 - c + c \ 4
    j = j - 7 * ( j \ 7 )
    l = i - j
    m = 3 + ( l + 40 ) \ 44
    d = l + 28 - 31 * ( m \ 4 )
    easterd = y & "-" & entillnolla(m) & "-" & entillnolla(d)
End function

Response. Write "Påskdagen infaller:  " & easterd(Request.Form("year"))
%>
```

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

## #20 — plelkes, 2003-07-07T11:11Z

Jättetack, fungerar som jag har tänkt :birp 
Ngra frågor, för att kolla att jag fattat:

1. funktionen entillnolla(x) är till för att tex april skall vara rätt (04)
2. koden function easterd(y)	
      Response. Write "Påskdagen infaller:  " & easterd(Request.Form("year")) Betyder att y= Request.Form("Year")
3. året, dvs Request.Form("Year") skrivs ej ut

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/81467-när-infaller-påskdagen  
Nästa sida: https://www.webforum.nu/amne/asp/81467-när-infaller-påskdagen/page2.md
