webForumDet fria alternativet

datumproblem

5 svar · 291 visningar · startad av FreeZer

FreeZerMedlem sedan jan. 2001950 inlägg
#1
<%
Dim dagar
manad = 0
dagar = DateDiff("d","2002-07-01",Date)

Do Until dagar =< 30 
manad = manad + 1
dagar = dagar - 30
Loop

%>

Som ni kanske ser så är jag inte så haj på ASP, undrar om någon kan hjälpa mig skriva om denna kodsnutt? För det blir fel med min kod, för alla månader är ju inte 30 dagar... Det jag vill är ju att få veta hur många månader och dagar sedan detta datum var...

tack på förhand :)

CatZMedlem sedan jan. 20022 440 inlägg
#2

Det finns ett par alternativ du kan använda dig av. Antingen gör du två uträkningar på antalet månader (det kan ju hända att dagen du söker kan vara den 30:e och du står på den 2:e)

Eller så kör du en grym datediff(dateadd(datepart))) sats som räknar allt på samma gång :)

Ska se om jag hittar en sak som LarsG hjälpte mig med

/red det var inte alls den koden jag trodde, letar vidare :)

if datepart("d", "2002-07-01") > datepart("d", date) then
  'koden som räknar ut om dagen som inte är nu har större tal
else
  'kod som räknar ut antalet månader och dagar
end if

nåt sådant skulle man kanske kunna göra, känns klumpigt iofs.

FreeZerMedlem sedan jan. 2001950 inlägg
#3

Förstår inte riktigt:

'koden som räknar ut om dagen som inte är nu har större tal

Jag känner att jag inte klarar av att skriva detta i ASP, liksom februari har ju 28 ibland och 29 ibland, du kan inte hjälpa mig lite mer hur jag ska göra?

Jesper TMedlem sedan nov. 20017 144 inlägg
#4

Är det något liknande du söker:
http://www.webforum.nu/showthread.php?s=&postid=78709#post78709
Annars så får du fram skillnaden i med "datediff".

Dim forstaDatum, andraDatum
forstaDatum="1971-07-01"
andraDatum=now()
Response.write datediff("[b]m[/b]",forstaDatum,andraDatum)

Där "m" står för månader, "D" för dagar, "ww" för veckor, "s" för sekunder osv.

28 ibland och 29 ibland

Det är det som är bra med datediff att den "vet" detta.

CatZMedlem sedan jan. 20022 440 inlägg
#5

Vin variant som jag precis gjort och testat är väl idiotsäker, men om någon kan göra det enklare så varsegod. Jag tror ialla fall att det är en ganska pedagogisk lösning på problemet :P

<% 
datum = #2001-06-14#
if datepart("d", datum) > datepart("d", date) then 
	manad = datediff("m", datum, date) - 1
	tmp1 = dateadd("m", -manad, date)
	tmp2 = datediff("d", datum, date)
	tmp3 = datediff("d", tmp1, date)
	dagar = tmp2-tmp3
else
	manad = datediff("m", datum, date)
	dagar = datepart("d", date) - datepart("d", datum)

end if

With Response
	.Write "Dagens Datum: " & date() & "<br>"
	.Write "Äldre Datum: " & datum & "<br>"
	.Write "Antal månader till det äldre datumet: " & manad & "<br>"
	.Write "Antal dagar till det äldre datumet EFTER att antalet månader räknats bort: " & dagar & "<br><br><br>"
	.Write "tmp1: " & tmp1 & "<br>"
	.Write "tmp2: " & tmp2 & "<br>"
	.Write "tmp3: " & tmp3 & "<br>"

End With
%>

Det ser då ut såhär på sidan när det skrivs ut till klienten:

Dagens Datum: 2003-01-03
Äldre Datum: 2001-06-14
Antal månader till det äldre datumet: 18
Antal dagar till det äldre datumet EFTER att antalet månader räknats bort: 19

tmp1: 2001-07-03
tmp2: 568
tmp3: 549

testa gärna med att byta ut datum = #2002-07-01# mot villket datum du finner för gott.

FreeZerMedlem sedan jan. 2001950 inlägg
#6

tack så mycket, det fungerar fint nu :)

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