Dagar i månad

ASP

37 svar · 482 visningar · startad av Erik Juhlin

Medlem sedan maj 200010 687 inlägg
Trådstart#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? :)

Medlem sedan juni 200032 967 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))
Medlem sedan maj 200010 687 inlägg
#3

Funkade inte. :(

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

Medlem sedan juni 200032 967 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.

Medlem 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
%>
Medlem 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]

Medlem sedan maj 200010 687 inlägg
#7

Jag skriver precis så! :(

Medlem 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. :)

Medlem sedan maj 200010 687 inlägg
#9

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

Medlem 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. :)

Medlem sedan maj 200010 687 inlägg
#11

Men hur blir det då med årsskiftet?

Medlem 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]

Medlem sedan maj 200010 687 inlägg
#13

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

Medlem 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)
Medlem 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)
Medlem sedan juni 200032 967 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)
Medlem 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?

Medlem sedan jan. 2001510 inlägg
#18

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

Medlem sedan juni 200032 967 inlägg
#19

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

Medlem 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)
------------------------^

249 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)