---
title: "datum för veckodag som infaller under"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/81565-datum-för-veckodag-som-infaller-under"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "plelkes"
published: "2003-07-08T13:22:17.000Z"
updated: "2003-07-13T18:25:20.000Z"
replies: 52
views: 880
page: 1
pages: 3
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/81565-datum-för-veckodag-som-infaller-under"
---

# datum för veckodag som infaller under

_Sida 1 av 3._

## #1 — plelkes, 2003-07-08T13:22Z

Hej på er i sommarvärmen :p 
Har sökt svaret men inget funnit:
Jag har 2 datum d1 och d2. Nu vill jag reda på vilken dag/datum som en viss veckodag infaller på (tex måndag)

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

## #2 — @nders, 2003-07-08T13:23Z

Vad har datumen med måndag att göra? Finns det en måndag mellan dessa två datum eller vad menar du?

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

## #3 — plelkes, 2003-07-08T13:27Z

@nders, det stämmer
Typ om jag tar perioden 18/6 - 25/6 i år då är 23:e en måndag.

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

## #4 — @nders, 2003-07-08T13:37Z

Lite snabbt ihopskrivet: 

```
function GimmeMyMonday(dteDate1, dteDate2)
	intWeekday = Weekday(dteDate1, vbMonday)
	newdate = dateAdd("d", 7-intWeekday+1, dteDate1)
	if newdate <= dteDate2 then
		GimmeMyMonday = newdate
	else
		GimmeMyMonday = "ERROR!"
	end if
end function

Response.Write GimmeMyMonday (#2003-07-08#, #2003-07-18#)
```

Fråga mig inte om +1-kompenseringen i dateAdd(). Jag lär mig aldrig hur amerikanerna och deras datum fungerar. ;)

Hoppas det fjungerar.

Mvh

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

## #5 — plelkes, 2003-07-08T13:50Z

Tack @nders, men

> Fråga mig inte om +1-kompenseringen i dateAdd(). Jag lär mig aldrig hur amerikanerna och deras datum fungerar

 
Vad har amerikanerna med vårt datum att göra??
Det verkar fungera så här, men inte när jag försöker ändra - kan bero påa tt jag inte fattar hur du tänker - förklara gärna koden mera utförligt

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

## #6 — @nders, 2003-07-08T13:52Z

Det är amerikaner som är skyldiga till veckodagsnummer och liknande i asp, och jag får helt enkelt aldrig kläm på det.

Du ska inte behöva ändra i funktionen, utan bara i anropet till den. Vad är det som blir fel?

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

## #7 — plelkes, 2003-07-08T13:52Z

Som sagt så vore jag tacksam för en förklaring rad för rad :birp ..

Det jag är ute efter egentligen är 

> midsommardagen den lördag som infaller under tiden den 20--26
> juni

 att ta reda på datumet för denna lördag

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

## #8 — @nders, 2003-07-08T13:57Z

Med lite kommentarer:

```
function GimmeMyMonday(dteDate1, dteDate2)
	[blue]' veckodagsnumret ska vi använda för
	' att kunna räkna ut hur många dagar vi
	' ska lägga till för att få det till måndag:[/blue]
	intWeekday = Weekday(dteDate1, vbMonday)
	[blue]' Vi skapar ett nytt datum, som blir måndagen
	' snarast efter datum1:[/blue]
	newdate = dateAdd("d", 7-intWeekday+1, dteDate1)
	[blue]' Nu ser vi till att kontrollera att det nya
	' datumet befinner sig i intervallet:[/blue]
	if newdate <= dteDate2 then
		GimmeMyMonday = newdate
	else
		GimmeMyMonday = "ERROR!"
	end if
end function
```

Lördag? Jag tyckte du sa måndag? ;)

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

## #9 — plelkes, 2003-07-08T13:59Z

Ledsen att jag skrev fel - men det är väl bara att ändra vbMunday till vbSaturday eller?

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

## #10 — @nders, 2003-07-08T14:00Z

Nej, vbMonday är en konstant som används för att säga att vi börjar våra veckor med måndag.

Prova istället att byta 7:an till en 5:a i DateAdd()-anropet.

Också måste du ju byta namn på funktionen. ;)

Mvh

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

## #11 — plelkes, 2003-07-08T14:05Z

som vanligt @nders ett jätte tack,
men

```
newdate = dateAdd("d", 7-intWeekday+1, dteDate1)
```

 hur skall man komma på ovanstående kod :q

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

## #12 — @nders, 2003-07-08T14:11Z

Tja...

Man börjar med att försöka sätta sig in i hur datumfunktionerna i asp fungerar, och vad de returnerar. Sedan sätter man sig ner och testar en jäkla massa tills man får det att fungera.

Man tuggar igenom Microsofts VBScript-dokumentation och även det som finns på devguru, och sedan nöter man tangenter.

Som sagt, jag kan inte helt förklara för dig exakt hur datumfunktionerna fungerar, jag tycker inte att de är helt logiska.

Mvh

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

## #13 — m_soderlund, 2003-07-08T14:20Z

Ett steg i rätt riktning är att ladda ner VBScript v5.6-dokumentationen. Det kan du exempelvis göra [här](http://msdn.microsoft.com/library/default.asp?url=/downloads/list/webdev.asp). :D
Sen har du en massa nyttigt och bra. :)

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

## #14 — plelkes, 2003-07-09T06:00Z

@nders: 

> Man börjar med att försöka sätta sig in i hur datumfunktionerna i asp fungerar, och vad de returnerar

 
Det är ju det jag försöker :x

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

## #15 — plelkes, 2003-07-10T12:20Z

Sen sist har jag

> Man börjar med att försöka sätta sig in i hur datumfunktionerna i asp fungerar, och vad de returnerar. Sedan sätter man sig ner och testar en jäkla massa tills man får det att fungera. Man tuggar igenom Microsofts VBScript-dokumentation och även det som finns på devguru...

 
Men inte tycker jag att jag har blivit så mycket klokare...

Inte ens med facit ( @nders kodning) i handen fattar jag konstuktionen..
Fast så långt har jag i a f insett att det var mycket smart av @nders...
Jag tror mig förstå så långt att:

1. bestämmer man vilken veckodag som perioden börjar på
2. och sedan hur många veckodagar behöver man lägga till för att få en lördg

 
Har jag fattat rätt så här långt? :stud

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

## #16 — Engine^, 2003-07-10T12:49Z

Ta reda på vilken dag det är i veckan för det datum du söker. Ange att en normal vecka börjar med Måndag (= 1). Idag (2003-07-10) ger intWeekday = 4.

```
intWeekday = Weekday(dteDate1, vbMonday)
```

Vilket datum har kommande måndag? Det går 7 dagar på en vecka alltså är det 7 - intWeekday dagar kvar till sista dagen denna vecka, Söndag, och 7 - intWeekDay + 1 dagar kvar till kommande måndag.

```
newdate = dateAdd("d", 7-intWeekday + 1, dteDate1)
```

Vill du veta vilket datum måndagen den här veckan var, så går du tillväga på samma sätt ungefär. Skillnaden är att du går bakåt i tiden

```
newdate = dateadd("d" -intWeekDay + 1, dteDate1)
```

Så, du har väl greppet om hur funktionen fungerar :)

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

## #17 — plelkes, 2003-07-11T15:36Z

Om veckan börjar med en måndag, då är väl måndag dagnr1, torsdag dagnr 4 och idag fredag dag 5, eller hur?
MEN

```

dteDate = 2003-07-11
intWeekDay = WeekDay(dteDate, 2)
Response.Write intWeekDay
```

 
Ovanstående Returnerar " 3 " borde inte det vara 5??

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

## #18 — plelkes, 2003-07-11T15:44Z

2003-07-07 som ju är måndag - returnerar en 7:a
2003-07-08 = tisdag returnerar 6
dvs i fallande ordning
Hoppas ni kan förklara varför

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

## #19 — plelkes, 2003-07-11T16:49Z

Fattar inte vad som inte stämmer.
Om jag tar Engine^´s kod occh gör lite ändring:

```
Session.LCID = 1053
dteDate = 2003-07-10
intWeekDay = WeekDay(dteDate, vbMonday)
sWeekDayName = WeekDayName(intWeekDay)
Response.Write intWeekDay & " = " & sWeekDayName
```

 
Så får jag utskriften

> 4 = onsdag

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

## #20 — @nders, 2003-07-11T17:07Z

> **plelkes skrev:**
>
> Fattar inte vad som inte stämmer.
> Om jag tar Engine^´s kod occh gör lite ändring:
>
> ```
> Session.LCID = 1053
> dteDate = 2003-07-10
> intWeekDay = WeekDay(dteDate, vbMonday)
> sWeekDayName = WeekDayName(intWeekDay)
> Response.Write intWeekDay & " = " & sWeekDayName
> ```
>
>  
> Så får jag utskriften
>
> > 4 = onsdag

Ange måndag som veckans första dag även då du använder WeekDayName():

```
sWeekDayName = WeekDayName(intWeekDay[b], ,vbMonday[/b])
```

Pga tidigare nämnd anledning kan jag tyvärr inte svara på dina andra *varför*\-frågor nu.

Mvh

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/81565-datum-för-veckodag-som-infaller-under  
Nästa sida: https://www.webforum.nu/amne/asp/81565-datum-för-veckodag-som-infaller-under/page2.md
