webForumDet fria alternativet

Dagar i månad

ASPur ASP

37 svar · 431 visningar · startad av Erik Juhlin

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#1

Jag vill veta hur många dagar det är i en månad.
Så om jag skriver februari (2) år 1998 så vill jag få fram hur många dagar det var den månaden.
Hur skriva? :)

------------------
/Erik
www.juhlin.nu /sk8files/ /mp2d/

@ndersMedlem sedan juni 200032 969 inlägg
#2

vassego!

testa får du göra själv...

strMonth="2"
strYear="2001"
antaldagar = cint(right(dateAdd("d",-1, cdate(strYear & "-" & right("0" & cint(strMonth)+1, 2) & "-01")),2))

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
nobody expects the spanish inquisition!</A>

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#3

Funkade inte. :(

Och en fråga. Varför använder du CInt och inte CLng?

------------------
/Erik
www.juhlin.nu /sk8files/ /mp2d/

@ndersMedlem sedan juni 200032 969 inlägg
#4

huh? det funkar klockrent hos mig...
vad får du för fel hos dig?

tja, mest för att antal dagar, månader eller år inte har så stor risk att överstiga 32768, som är den övre gränsen för int i vb/vbscript.

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
nobody expects the spanish inquisition!</A>

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#5

Jag skriver så här och får en etta. :(

<%
strMonth="2"
strYear="2001"
antaldagar = cint(right(dateAdd("d",-1, cdate(strYear & "-" & right("0" & cint(strMonth)+1, 2) & "-01")),2))
Response.Write antaldagar
%>

------------------
/Erik
www.juhlin.nu /sk8files/ /mp2d/

ironheadMedlem sedan mars 20011 346 inlägg
#6

...funkar kanon hos mig.

Kör IIS 5

<%
strMonth="2"
strYear="2001"
antaldagar = cint(right(dateAdd("d",-1, cdate(strYear & "-" & right("0" & cint(strMonth)+1, 2) & "-01")),2))
Response.Write antaldagar
%>

[Redigerat av ironhead den 03 maj 2001]

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#7

Jag skriver precis så! :(

------------------
/Erik
www.juhlin.nu /sk8files/ /mp2d/

JanspeedMedlem sedan jan. 2001510 inlägg
#8

Kan du inte prova det här:

DatumFore = "1998-02-01"
DatumEfter = "1998-03-01"

Dagar = DateDiff("d", DatumFore, DatumEfter)
Dagar = Dagar - 1

Är dock inte så haj på datum men du kan ju prova. :)

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#9

Hur ska man då skriva?
Jag vill bara skriva en 2a och 2001 som i @nders exempel.

------------------
/Erik
www.juhlin.nu /sk8files/ /mp2d/

JanspeedMedlem sedan jan. 2001510 inlägg
#10

Frågan är om du ens behöver minska dagar med 1?

dim ar, manad
ar = 1998
manad = 2

DatumFore = ar & "-" & manad & "-01"
DatumEfter = ar & "-" & manad + 1 & "-01"

Dagar = DateDiff("d", DatumFore, DatumEfter)

Jag tror det ska funka. :)

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#11

Men hur blir det då med årsskiftet?

------------------
/Erik
www.juhlin.nu /sk8files/ /mp2d/

JanspeedMedlem sedan jan. 2001510 inlägg
#12

Vilket årsskifte?

Det enda jag vet är att DateDiff tar ut hur många dagar det är mellan två datum.

Så för att få hur många dagar februari 1998 har så tar du bara datumet 1998-02-01 (1 februari 1998) mot 1998-03-01 (1 mars 1998) så får du ut antalet dagar som månaden var med DateDiff. :)

[Redigerat av Janspeed den 03 maj 2001]

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#13

Men det blir lite konstigt att få fram skillnaden mellan 2000-12-01 och 2000-13-01.

------------------
/Erik
www.juhlin.nu /sk8files/ /mp2d/

JanspeedMedlem sedan jan. 2001510 inlägg
#14

Det fixar du enkelt med en if-sats


dim ar, manad
ar = 1998
manad = 2

DatumFore = ar & "-" & manad & "-01"

If manad = 12 Then
DatumEfter = ar & "-" & 1 & "-01"
Else
DatumEfter = ar & "-" & manad + 1 & "-01"
End If

Dagar = DateDiff("d", DatumFore, DatumEfter)
JanspeedMedlem sedan jan. 2001510 inlägg
#15

Sorry glömde året också.

dim ar, manad
ar = 1998
manad = 2

DatumFore = ar & "-" & manad & "-01"

If manad = 12 Then
DatumEfter = ar + 1 & "-" & 1 & "-01"
Else
DatumEfter = ar & "-" & manad + 1 & "-01"
End If

Dagar = DateDiff("d", DatumFore, DatumEfter)
@ndersMedlem sedan juni 200032 969 inlägg
#16

i så fall så ställer jag mig upp och högljutt skriker dateadd!

dim ar, manad
ar = 1998
manad = 2

DatumFore = cdate(ar & "-" & right("0" & manad,2) & "-01"
DatumEfter = dateadd("m",1,DatumFore)

Dagar = DateDiff("d", DatumFore, DatumEfter)

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
nobody expects the spanish inquisition!</A>

JanspeedMedlem sedan jan. 2001510 inlägg
#17

Jag håller med om att det är mycket effektivare på DatumEfter men frågan är om du behöver CDate på DatumFore?

JanspeedMedlem sedan jan. 2001510 inlägg
#18

hmm... jag ser att jag har missat 0:an helt.

@ndersMedlem sedan juni 200032 969 inlägg
#19

jag måste köra cdate på datumfore för att få använda den i dateadd, tror jag. :)

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
nobody expects the spanish inquisition!</A>

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#20

Vad är det för fel på den här koden nu då?

<%
statyear = 1998
statmonth = 12

CDate(statyear & "-" & right("0" & statmonth,2) & "-01")
DateAdd("m", 1, datebefore)

daysinmonth = DateDiff("d", datebefore, dateafter)
Response.Write daysinmonth
%>

Error Type:
Microsoft VBScript compilation (0x800A0414)
Cannot use parentheses when calling a Sub
/erik_Local/IABStatistic/ASP Page1.asp, line 21, column 25
DateAdd("m",1,datebefore)
------------------------^

------------------
/Erik
www.juhlin.nu /sk8files/ /mp2d/

139 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)