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.
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
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.