webForumDet fria alternativet

Hålla datum mellan samma datum fast olika månader!

ASP

7 svar · 284 visningar · startad av oskars

Medlem sedan nov. 20051 317 inlägg
Frågan#1

Hej,

jag har försökt göra en funktion som ska funka så här:

Exempel:
Datum1 = 2007-01-21
Datum2 = 2007-02-20

och så ska datumet se ut, ända tills det blir 2007-02-21... då ska datumen ändras sig enligt följande:

Datum1 = 2007-02-21
Datum2 = 2007-03-20

Jag har försökt göra det, men tycker det är lite snurrigt:

myFirstYear = Year(Date)
mySecondYear = Year(Date)
myFirstMonth = Month(Date) - 1
mySecondMonth = myFirstMonth + 1

Datum1 = myFirstYear & "-" & myFirstMonth & "-21"
Datum2 = mySecondYear & "-" & mySecondMonth & "-20"

Men det blir problem vid månadsskiften...

Tacksam för hjälp :)

Medlem sedan juni 200032 967 inlägg
#2

DateAdd()

mvh

Medlem sedan nov. 20051 317 inlägg
#3

Tack så mkt!

men det står så här: "The Number argument is a multiplier for the Interval argument (i.e., how many days, weeks, months, etc.). If this is a positive number, you will go forward in time. A negative number will go back in time."

Det är ju perfekt, men jag kan inte ange ett visst antal dagar som den ska gå tillbaka i tiden, för det är ju oilka många dagar i varje månad?

Medlem sedan juni 200032 967 inlägg
#4

Du behöver ju inte använda dateadd för att pilla med dagarna, det räcker att du gör det med år och månad.

Annars kan du ju alltid använda dateserial.

datum2 = dateserial(year(datum), month(datum)+1, day(date))
Medlem sedan nov. 20051 317 inlägg
#5

aaah, schysst...

problemet är dock vid månadsskiften...

om det står month(date)+1 den 2007-01-31 så visar den ju "2007-02-31"... men när den slår över till 2007-02-01 så visar den ju "2007-03-31"..

:stud

Den här koden visar rätt nu, men jag tror den kommer visa fel när det blir 2007-03-01...

datum1 = dateserial(year(date), month(date)-1, 21)
datum2 = dateserial(year(date), month(date), 21)
Response.Write datum1 & " - " & datum2
Medlem sedan juni 200032 967 inlägg
#6

Den här koden visar rätt nu, men jag tror den kommer visa fel när det blir 2007-03-01...

Det är ju bara att prova!

Lägg in de datumen du vill använda i anropet till dateserial...

edit:

om det står month(date)+1 den 2007-01-31 så visar den ju "2007-02-31"...

Och varför vill du inte använda dateadd då? Dateadd är ju jättefin, eftersom den hanterar just detta.

Medlem sedan nov. 20051 317 inlägg
#7

Hm, ja jo, lite jobbigt att vänta tills dess dock! Har du något tips på hur jag kan testa utan att behöva vänta?

shit vad jag känner mig handledsförlamad och okunnig nu :D

EDIT: jag vill gärna använda DateAdd, men förstår itne så mkt av det :/

Medlem sedan juni 200032 967 inlägg
#8

Hm, ja jo, lite jobbigt att vänta tills dess dock! Har du något tips på hur jag kan testa utan att behöva vänta?

@nders skrev:

Lägg in de datumen du vill använda i anropet till dateserial...

mittdatum = #2007-03-01#
datum1 = dateserial(year(mittdatum), month(mittdatum)-1, 21)
datum2 = dateserial(year(mittdatum), month(mittdatum), 21)
Response.Write datum1 & " - " & datum2

jag vill gärna använda DateAdd, men förstår itne så mkt av det :/

Det står ganska utförligt på sidan jag länkade till. Ta bort en månad från ett datum:

mydate = dateadd("m", -1, date)
256 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)