Avatar billede want2learn Nybegynder
01. april 2006 - 10:47 Der er 6 kommentarer og
1 løsning

dage og uger i en mdr.

Vil nogle med et kort eks. vise hvordan jeg man vise årets mdr. nu, samt hvormange uger der er i denne mdr. samt hvad de hedder og hvor mange dage der er i denne mdr. og så et link man kan klikke på som går en mdr. frem som evt. kan vises på samme side, ang. dage/uger/uge tal.
Avatar billede eagleeye Praktikant
01. april 2006 - 15:22 #1
>> hvordan jeg man vise årets mdr. nu
Datoen lige nu ligger i Date(). Du kan så bruge month funktionen finde måned:

maaned = Month(date)


>>hvor mange dage der er i denne mdr.
Du kan lave en funktion som regner det ud, man skal kende måned og år for at finde ud af hvor mange dage der er i en måned hvis den skal tage højde skudår februar.

function dageimaaned(maaned, aar)
  dato = DateSerial(aar, maaned, 1)
  dageimaaned = DateDiff("d", dato, DateAdd("m",1,dato))
end function

og så kande den sådan her hvis du vil kende hvor mnage dage der februar 2006:
dage = dageimaaned(2,2006) 



>>amt hvormange uger der er i denne mdr. samt hvad de hedder
Du kan lave en funktion som finder og lister alle ugerne i en måned så kan man tælle dem ud fra det.
 
function ugerimaaned(maaned, aar)
  tmp = ""
  dato = DateSerial(aar, maaned, 1)
  datoSlut = DateSerial(aar, maaned+1, 1)
  do while dato < datoSlut
    ugenr = DatePart("ww", dato)
    tmp = tmp & "," & ugenr
    dato = DateAdd("d", 7, dato)
  loop
  'tjek om sidste dag i måned er i en ny ude:
  dato = DateSerial(aar, maaned+1, 0)
  ugenr = DatePart("ww", dato)
  if inStr(1, tmp & ",", "," & ugenr & ",") = 0 then tmp = tmp & "," & ugenr
  ugerimaaned = mid(tmp,2)
end function

Kald den sådan her:
ugerliste = ugerimaaned(2,2006)
antalUger = ubound(split(ugerimaaned,","))+1


Du kan bygge det hele sammen på en side som får en måned+år via querystirng.


<%
session.LCID = 1030

maaned = Request.QueryString("month")
aar = Request.QueryString("year")

if not (isNumeric(maaned) and isNumeric(aar) and maaned<>"" and aar<>"") then
  maaned = Month(date)
    aar = Year(date)
end if


Response.Write "Data for " & MonthName(maaned) & " måned i år " & aar
Response.Write "<br><br><br>"

ugeliste = ugerimaaned(maaned,aar)
Response.write "Antal dage i denne måned : " & dageimaaned(maaned, aar) & "<br>"
Response.write "<br>"
Response.write "Ugenumre i denne måned : " & ugeliste & "<br>"
Response.write "<br>"
Response.write "Antal uger i denne måned : " & ubound(split(ugeliste, ","))+1  & "<br>"

Response.write "<br>"
Response.write "<br>"

tmpDato=DateSerial(aar, maaned-1, 1)
Response.write "<a href=""?month=" & month(tmpDato) & "&year=" & Year(tmpDato) & """>Forrige måned</a>"
Response.write " - "
tmpDato=DateSerial(aar, maaned+1, 1)
Response.write "<a href=""?month=" & month(tmpDato) & "&year=" & Year(tmpDato) & """>Næste måned</a>"



'Funktioner

function dageimaaned(maaned, aar)
  dato = DateSerial(aar, maaned, 1)
  dageimaaned = DateDiff("d", dato, DateAdd("m",1,dato))
end function

function ugerimaaned(maaned, aar)
  tmp = ""
  dato = DateSerial(aar, maaned, 1)
  datoSlut = DateSerial(aar, maaned+1, 1)
  do while dato < datoSlut
    ugenr = DatePart("ww", dato)
    tmp = tmp & "," & ugenr
    dato = DateAdd("d", 7, dato)
  loop
  'tjek om sidste dag i måned er i en ny ude:
  dato = DateSerial(aar, maaned+1, 0)
  ugenr = DatePart("ww", dato)
  if inStr(1, tmp & ",", "," & ugenr & ",") = 0 then tmp = tmp & "," & ugenr
  ugerimaaned = mid(tmp,2)
end function
%>
Avatar billede want2learn Nybegynder
01. april 2006 - 15:52 #2
det du har lavet her kan man vel godt kalde grundstenen til en kalender så er det jo bare om at sætte ugerne ud i venstre side og så den til at sætte hver ugedag op i 7 kolonner fra M til S.

eller tager jeg forkert !?
Avatar billede eagleeye Praktikant
01. april 2006 - 16:25 #3
Ja det må siges at være grundstene i en kalender.

Når man vil udskrive det som dette:

S  M  T  O  T  F  L
                  1
2  3  4  5  6  7  8
9 .............


har man også behov for at vide hvilken er første dag i måned (man,tir,ons..) det man gøres med weekday(dato) og navnet findes med weekdayname(weekday)

dato = DateSerial(2006,4,1)
foersteDag = weekday(dato)  'give 1..7 for 1=søndag, 2=mandag..... 7=lørdag
Avatar billede want2learn Nybegynder
01. april 2006 - 19:04 #4
ja jeg ville gerne kunne sætte den op som det du skriver bare ikke s til L men M til S.

men vil du lægge et svar.
Avatar billede eagleeye Praktikant
01. april 2006 - 20:01 #5
Ok her et svar :)
Avatar billede want2learn Nybegynder
04. april 2006 - 14:27 #6
EE.

Har kigget lidt på det synes ikke jeg kan få den til at lave en liste som den du skriver.

M  T  O  T  F  L  S
3  4  5  6  7  8  9
10 11 12 13 14 15 16
....

kunne det være du vil kigge lidt på det og hjælpe mig på vej !?
Avatar billede eagleeye Praktikant
04. april 2006 - 21:17 #7
Du kan tage et kig på denne kode den kan nok give noget inspiration:

http://activedeveloper.dk/artikler/default.asp?articleid=37


og her en linkdirekte til en demo af koden:
http://activedeveloper.dk/aspdigital/studies/eksempler/kalender.asp?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester