Avatar billede Søren Bech Morsing Praktikant
10. oktober 2002 - 14:57 Der er 6 kommentarer og
2 løsninger

antal dage mellem 2 tilfældige datoer

Jeg har brug for en funktion der kan give antallet af dage mellem 2 dage (også negative antal dage)
Avatar billede kmx Nybegynder
10. oktober 2002 - 15:06 #1
<script language="JavaScript"><!--
function y2k(number) { return (number < 1000) ? number + 1900 : number; }

function daysElapsed(date1,date2) {
    var difference =
        Date.UTC(y2k(date1.getYear()),date1.getMonth(),date1.getDate(),0,0,0)
      - Date.UTC(y2k(date2.getYear()),date2.getMonth(),date2.getDate(),0,0,0);
    return difference/1000/60/60/24;
}

document.write(daysElapsed(new Date(2000,0,1),new Date(1999,11,31)));
//--></script>
Avatar billede jakoba Nybegynder
10. oktober 2002 - 15:08 #2
eller lidt nemmere:

var dage = Math.round( (date1.valueOf()-date2.valueOf()) / (24*60*60*1000) );
Avatar billede Søren Bech Morsing Praktikant
10. oktober 2002 - 15:15 #3
jakoba: forklaring udbedes

function antalDage(date1, date2) {
    var dage = Math.round( (date1.valueOf()-date2.valueOf()) / (24*60*60*1000) );
    alert(dage);
    }
   
    antalDage("2002-08-08", "2002-10-10");
Avatar billede Slettet bruger
10. oktober 2002 - 15:26 #4
valueOf er nok lidt usikker i den sammenhæng. Brug hellere:

function antalDage(dato1, dato2) {
eval("d1 = new Date(" + dato1.replace(/-/g, ", ") + ");");
eval("d2 = new Date(" + dato2.replace(/-/g, ", ") + ");");
dage = Math.ceil((d1.getTime() - d2.getTime()) / 1000 * 60 * 60 * 24);
alert(dage);
}

antalDage("2002-08-08", "2002-10-10");
Avatar billede Slettet bruger
10. oktober 2002 - 15:31 #5
Ups:

function antalDage(dato1, dato2) {
eval("d1 = new Date(" + dato1.replace(/-/g, ", ") + ");");
eval("d2 = new Date(" + dato2.replace(/-/g, ", ") + ");");
dage = Math.ceil((d1.getTime() - d2.getTime()) / (1000 * 60 * 60 * 24));
alert(dage);
}

P.S. Månednummeret skal være én mindre. Dags dato er altså "2002-09-10".
Avatar billede Søren Bech Morsing Praktikant
11. oktober 2002 - 12:00 #6
phoenixv: din så mest overskuelig ud.
Kender dog ikke eval() - hvad er det den kan?

Jacoba: hvad kan valueOf
Avatar billede jakoba Nybegynder
11. oktober 2002 - 12:06 #7
valueOf giver et simpelt (men stort) heltal. antallet af millisekunder siden en eller anden dato i 1970. målt i UTF-tid.

så jeg er lidt uenig med phoenixv her. men valueOf sidestepper vi netop tidszoner og sommertid og alle de andre faktorer der nemt kan forplumre regnestykket.

mvh JakobA
Avatar billede Slettet bruger
11. oktober 2002 - 15:48 #8
jakoba>>
Men det kræver, at man giver et dato-objekt med i kaldet. Og det er lidt besværligt, synes jeg.

sbk>>
http://www.devguru.com/Technologies/ecmascript/quickref/eval.html
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester