Har förstått att min kod som ska berätta hur många månader och dagar det är till någon fyller inte alls är bra. Här kommer det ska vara med först:
If (RecSet("born") \<\> "") Then
ReplaceStr = Replace(RecSet("born"), " ", "")
Fyller = right(left(ReplaceStr, 6), 4)
Ratt = isNumeric(Fyller)
End If
If (Len(Fyller) = 4) And (Ratt = True) Then
Fyller har nu ett värde t.ex. 0206.
min kod fungerade så innan att den gjorde om det till 2002-02-06. och tog datediff("m" och "d". men det blir heltokigt. Stämde ju till viss del men sen måste man ju ta differensen av månader och dagar mm och det vet jag inte hur man gör.
Så om någon kunde hjälpa mig med lite kod skulle jag vara tacksam :)
det är lite olika beroende på vad de skrivit in.
men det är tänkt att if-satsen ska sortera ut det där de står t.ex. 830206-2323 där de sex första är de enda viktiga här.
dob = left(recset("born"),6)
if isNumeric(dob) then
m = mid(dob,2,2)
d = mid(dob,4,2)
y = year(date)
birthday = cdate(y & "-" & m & "-" & d)
days = datediff("d",birthday,date)
if days < 0 then
'fyller nästa år
days = datediff("d",birthday,dateadd("yyyy",1,date))
end if
response.write days & " dagar kvar"
end if
------------------ essentitia preter non sans multiplicandum
dim dob,m,d,y,birthday,days,months
dob = left(recset("born"),6)
'
'dob förutsätts vara i
' formatet yymmdd
'
if isNumeric(dob) then
d = mid(dob,5,2)
m = mid(dob,3,2)
y = cstr(year(date))
birthday = y & "-" & m & "-" & d
if isdate(birthday) then
birthday = cdate(birthday)
days = datediff("d",date,birthday)
if days < 0 then
birthday = dateadd("yyyy",1,birthday)
end if
months = datediff("m",date,birthday)
days = datediff("d",dateadd("m",months,date),birthday)
if datediff("d",birthday,dateadd("m",months,date)) > 0 then months = months - 1
days = datediff("d",dateadd("m",months,date),birthday)
end if
response.write months & " månader och " & days & " dagar kvar"
end if
------------------ essentitia preter non sans multiplicandum
jo den koden var inte helt fel. Men lite. Om dagens datum är MER än datumet när personen fyller år blir det tokigt. Typ istället för 1 månad och 29 dagar blir det 1 månad och -1 dag.
och sen så förstår jag inte dessa rader:
Dagar = Datediff("d",Dateadd("m",Months,Date),Birthday
If Datediff("d",birthday,dateadd("m", Months, Date)) > 0 Then Months = Months - 1
Om du kunde förklara lite hur de funkar. Dateadd innne i datediffen alltså... :)
Jaha, jag tyckte jag testade ut det fallet, men men ..
Jo, datediff med månader avrundar väl värdet så att om det är 50 dagar så får man 2 månader. Tanken var att om jag lägger på antalet månader och det värdet är större än födelsedatumet så innebär det att man har fått en avrundning uppåt och i så fall tar jag bort en månad.
Det verkar dock som om det blir något problem precis i skarven. Det hänger säkert ihop med att månader har olika längd. Jag har ingen direkt lösning.
------------------ essentitia preter non sans multiplicandum
251 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2