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/
37 svar · 431 visningar · startad av Erik Juhlin
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/
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>
Funkade inte. :(
Och en fråga. Varför använder du CInt och inte CLng?
------------------
/Erik
www.juhlin.nu /sk8files/ /mp2d/
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>
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/
...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]
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. :)
Hur ska man då skriva?
Jag vill bara skriva en 2a och 2001 som i @nders exempel.
------------------
/Erik
www.juhlin.nu /sk8files/ /mp2d/
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. :)
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]
Men det blir lite konstigt att få fram skillnaden mellan 2000-12-01 och 2000-13-01.
------------------
/Erik
www.juhlin.nu /sk8files/ /mp2d/
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)
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)
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>
Jag håller med om att det är mycket effektivare på DatumEfter men frågan är om du behöver CDate på DatumFore?
hmm... jag ser att jag har missat 0:an helt.
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>
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/