14. november 2005 - 10:41Der er
9 kommentarer og 1 løsning
antal dage mellem 2 datoer
Hej
Jeg har 3 felter dato1, dato2 og antalDage Jeg kunne godt tænke mig at når man har indtastet de 2 datoer skal antal dage der er mellem de 2 datoer fremkomme i feltet antalDage.
Det gælder nemlig om at konvertere de to datoer til hvert sit javascript Date-objekt. Hvis man har sådanne to kan man finde forskellen i millisekunder, og derfra er der jo bare at omregne det til dage
function numDays(dato1,dato2){ var reg = /^\d{4}\/\d\d\/\d\d$/;//regexp, der betyder 0000/00/00, hvor nullet står for et tilfældigt tal if(!dato1.match(reg) || !dato1.match(reg)){ alert("Fejl i datoformat"); return false; } dato1 = dato1.split("/"); dato2 = dato2.split("/"); var d1 = new Date(+dato1[0],+dato1[1]-1,+dato1[2]); var d2 = new Date(+dato2[0],+dato2[1]-1,+dato2[2]); var msDiff = Math.abs(d2.getTime()-d1.getTime());//Forskel i millisekunder return msDiff/(1000*60*60*24);//24 t. à 60 m. à 60 s. à 1000 millisekunder = 1 dag }
-- så vil funktionen returnere antal dage mellem de to datoer i tekststrengene dato1 og dato2 !-)
-- bruges f.eks. sådan:
//f er en form (-objekt !-) og dato1 og -2 er felter i den form var antalDage = numDays(f.dato1.value,f.dato2.value); if(!antalDage || antalDage > 31){ if(antalDage) alert("Der må ikke være mere end 31 dage mellem datoerne"); return false; }
jeg skal måske lige fortælle at jeg ikke har en fløjtende fis forstand på javascript, så det ville derfor være super hvis du gad vise et eksempel hvori formularen indgår
<script type="text/javascript"> function numDays(dato1,dato2){ var reg = /^\d{4}\/\d\d\/\d\d$/;//regexp, der betyder 0000/00/00, hvor nullet står for et tilfældigt tal if(!dato1.match(reg) || !dato2.match(reg)){ alert("Fejl i datoformat"); return false; } dato1 = dato1.split("/"); dato2 = dato2.split("/"); var d1 = new Date(+dato1[0],+dato1[1]-1,+dato1[2]); var d2 = new Date(+dato2[0],+dato2[1]-1,+dato2[2]); var msDiff = Math.abs(d2.getTime()-d1.getTime());//Forskel i millisekunder return msDiff/(1000*60*60*24);//24 t. à 60 m. à 60 s. à 1000 millisekunder = 1 dag } </script>
<form> Dato 1: <input name="dato1"><br> Dato 2: <input name="dato2" onchange="f=numDays(this.form.dato1.value,this.value);this.form.forskel.value=f?f:'Fejl i dato(er)'"><br> Forskel: <input name="forskel" readonly="readonly"> </form>
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.