Gå til innhold

Anbefalte innlegg

Kan noen forklare meg hvorfor denne koden:

session.lcid = 1033
response.write formatdatetime(dateadd("ww",18,#2004/1/1#),vbLongDate)

gir resultatet

6. mai 2004

Burde ikke dette gi meg den første dagen i uke 18 (som er 26. april 2004) eller er det jeg som er helt på jordet her?

Det jeg bruker det til er å finne ut hvilken måned man er i basert på ukenummeret, og i dette tilfellet rapporterer den da Mai, og dette skaper selvfølgelig problemer når det ikke finnes poster for Mai (den ligger jo i fremtiden).

Tips og lure svar mottas med takk!

 

-Geir Rune

Lenke til kommentar
Videoannonse
Annonse

Det var som søren... :( det er jo en viss logikk bak det, men det blir egentlig ikke helt riktig. 6. mai har ingenting med uke 18 å gjøre, og ettersom jeg forsto det så er det det faktiske ukenummeret i henhold til den gregorianske kalenderen som regnes ut, og ikke antall uker med 7 dager.

Det kunne sikkert vært løst om funksjonen hadde noen argumenter som anga hva man regner som 1. ukedag o.l., men men...

 

Skulle vel ikke ha noen tips på hvordan man ut i fra et ukenummer kan finne ut hvilken dag som er den første i den uken?

Endret av reactor
Lenke til kommentar

6 mai er mest sannsynleg 18 v/126d etter 0101 2004..

 

 

sorry, men datobehandling og lignande er nåke av det eg ikkje kan så masse om.. har tenkt å sette meg inn i det og lage en kalender til sida mi, men det får bli seinare.

no har eg absolutt ikkje tid. Skriftleg eksamen om tre veker og munnleg om 4/5 veker, jobb, russ og alt for mange andre ting..

Lenke til kommentar

Prøv denne:

Function getfirstDateOfWeekInWeekFromDate(dateValue, firstDayOfWeek)
 Dim returnValue
 returnValue = dateAdd("d", - (datePart("w", dateValue, firstDayOfWeek) - 1), dateValue)
 getfirstDateOfWeekInWeekFromDate = returnValue
End Function

Function getFirstDateInWeekFromWeek(weekValue, yearValue, firstDayOfWeek, firstWeekOfYear)
 Dim tmpDate, tmpWeekModifier
 tmpDate = dateSerial(yearValue, 1, 1)
 If datePart("ww", tmpDate, firstDayOfWeek, firstWeekOfYear) = 1 Then
   tmpWeekModifier = 1
 Else
   tmpWeekModifier = 0
 End If
 tmpDate = dateAdd("ww", weekValue - tmpWeekModifier, tmpDate)
 returnValue = getfirstDateOfWeekInWeekFromDate(tmpDate, firstDayOfWeek)
 getFirstDateInWeekFromWeek = returnValue
End Function

getFirstDateInWeekFromWeek(18, 2004, vbMonday, vbFirstFourDays) blir 26/4/2004

 

vbMonday og vbFirstFourDays er vb konstanter se:

Microsoft MSDN

Endret av Inge_aning
Lenke til kommentar

Takker for den, Inge_Aning. Jeg skal se om jeg kan få brukt dette isteden. Planen var egentlig å kjøre alt i en enkelt SQL setning, noe som jeg på forhånd ville gå bra, men jeg tror jeg dropper det og lager litt mer kode på selve ASP siden isteden.

 

Takk for all hjelp iallfall!

Lenke til kommentar

Tror det ikke er mulig å gjøre noe slikt i sql.

Vad jag vet så kan man ikke sette firstweekofyear i sql.

då får man amerikansk ukenummer som skiljer sig fra norskt.

Om jag minns rett så er uke 1 alltid FirstJan1, medans i norge er det FirstFourDays.

 

Bruk funktionerna som jag skrev tidigare i din asp-side.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...