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.
Danmark vil mindske afhængigheden af globale techgiganter, men det kræver mere end politiske formuleringer og strategier, understreger PROSA’s formand Niels Bertelsen.
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.