05. juni 2008 - 15:47Der er
4 kommentarer og 1 løsning
Hjælp til DateDiff funktion
Hej allesammen.
Mit script ser således ud: <% Function DDIff(d1, d2) minutes = abs(datedIff("n", d1, d2)) If minutes <= 0 Then word = "0 minute(s)" Else word = "" If minutes >= (24*60)*365 Then word = word & minutes\(24*60)*365 & " year(s), " End If minutes = minutes mod (24*60)*365 If minutes >= (24*60)*30 Then word = word & minutes\(24*60)*30 & " month(s), " End If minutes = minutes mod (24*60)*30 If minutes >= 24*60 Then word = word & minutes\(24*60) & " day(s), " End If minutes = minutes mod (24*60) If minutes >= 60 Then word = word & minutes\(60) & " hours(s), " End If minutes = minutes mod 60 If minutes >= 60 Then word = word & minutes & " minute(s)" End If End If DDIff = word End Function %>
Så er problemet bare at mit matematik halter lidt hvad det der angår, kan simpelthen ikke få den til at vise det korrekt.
Med det regelsæt du har sat op vil resultatet ikke blive præcist (eller i det mindste ikke som man normalt ville forvente), da du antager hver måned har 30 dage (hvilket jo ikke er tilfældet). Derfor vil der blive en afvigelse i antallet af dage ifht. det forventede. Med dit regelsæt, ville jeg flikke rutinen således sammen:
Function DDIff(d1, d2) dim rest minutes = abs(datedIff("n", d1, d2)) If minutes <= 0 Then word = "0 minute(s)" Else word = (minutes mod 60) & " minute(s)" rest = minutes \ 60
If rest >= 0 Then word = (rest mod 24) & " hour(s), " & word End If
rest = rest \ 24 If rest >= 1 Then word = (rest mod 30) & " day(s), " & word End If
rest = rest \ 30 If rest >= 1 Then word = rest mod 12 & " month(s), " & word End If
rest = rest \ 12 If rest >= 1 Then word = rest & " year(s), " & word End If End If DDIff = word End Function
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.