Avatar billede da_kbaz Nybegynder
11. april 2002 - 20:32 Der er 10 kommentarer og
1 løsning

Regn antal dage ud

Hej.

Er der nogen der kan hjælpe mig på rette vej, til at lave et script der kan regne et antal dage ud, mellem to datoer?

Jeg har 6 drop downs i en form: ankomstdag, ankomst måned, ankomst år - afrejsedag, afrejsemåned og afrejse år.

Det jeg vil er at kunne regne ud hvor mange dage der er mellem de 2 datoer, og så kan jeg gange det med den aktuelle pris for værelser mm., de har valgt på siden.

Mvh
Kim Andersen.
Avatar billede jakoba Nybegynder
11. april 2002 - 21:51 #1
//eksempel:  new date( 2002, 5-1, 20 ) // for 20'ende maj iår
var ankomst = new Date( ankomstaar, ankomstmaaned-1, ankomstdag );
var afrejse = new Date( afrejseaar, afrejsemaaned-1, afrejsedag );

var dageImellem = Math.round( ( ankomst.valueOf() - afrejse.ValueOf() ) / ( 1000/60*60*24 ) );

Dage og år er normale tal.

måneder nummereres fra 0 så jeg trækker en fra månedens nummer for at du jkan have den som den mere normale januar=1...december=12.

mvh JakobA
Avatar billede jakoba Nybegynder
11. april 2002 - 21:53 #2
Hmm.. mon ikke folk ankommer før de rejser igen? Det er nok bedre at trække ankomst fra afrejse hvis vi skal have et positivt antal dage :-)

var dageImellem = Math.round( ( afrejse.valueOf() - ankomst.ValueOf() ) / ( 1000/60*60*24 ) );
Avatar billede jakoba Nybegynder
11. april 2002 - 21:55 #3
Ups igen:  100*60*60*24

var dageImellem = Math.round( ( afrejse.valueOf() - ankomst.ValueOf() ) / ( 1000*60*60*24 ) );
Avatar billede da_kbaz Nybegynder
11. april 2002 - 22:46 #4
Hmm
Der er fejl i dit script somewhere?

Jeg har ændret det lidt, men tror ikke det er mig der har kaget :)

var ankomst = new Date( document.book.arriveyear.value, document.book.arrivemonth-1.value, document.book.arriveday.value );
  var afrejse = new Date( document.book.leaveyear.value, document.book.leavemonth-1.value, document.book.leaveday.value );

Den siger: object expected
Avatar billede da_kbaz Nybegynder
11. april 2002 - 22:48 #5
De linier jeg har pastet er der hvor der er fejl....
Avatar billede da_kbaz Nybegynder
11. april 2002 - 22:54 #6
Vent, det er muligvis mig der er en knallert....
Kigger lige på det.
Avatar billede da_kbaz Nybegynder
11. april 2002 - 22:57 #7
Nej det var dig jakoba :)

  var ankomst = new Date( document.book.arriveyear.value, (document.book.arrivemonth.value-1), document.book.arriveday.value );
  var afrejse = new Date( document.book.leaveyear.value, (document.book.leavemonth.value-1), document.book.leaveday.value );

Læg mærke til paranteserne inde i paranteserne...
Dem havde du glemt:)
Men ved stadig ik om scriptet virker, hehe
Avatar billede jakoba Nybegynder
11. april 2002 - 23:08 #8
Har du lige checket om ikke det er præcis ligesågodt uden?

  var ankomst = new Date( document.book.arriveyear.value, document.book.arrivemonth.value-1, document.book.arriveday.value );
  var afrejse = new Date( document.book.leaveyear.value, document.book.leavemonth.value-1, document.book.leaveday.value );

mvh JakobA
Avatar billede jakoba Nybegynder
11. april 2002 - 23:14 #9
men måske lidt risky at tage direkte de brugeren indtaster i felterne, der skal nok være nogen der skriver

  iår , maj , 20

i de 3 felter og det går ihvertfald galt for vi vil jo kun have tal.
Avatar billede da_kbaz Nybegynder
11. april 2002 - 23:22 #10
Det virker jo ALT ALT ALT for smukt nu :))))

Selvom du havde et par fejl, hehe. Du skal have paranteserne med, da den ellers ikke trækker fra.

Dataene får den fra drop down bokse, så det kan slet ikke lade sig gøre at "indtaste" noget forkert.

Jeg paster lige koden, hvis der er andre der skulle stå og mangle samme script :

  var ankomst = new Date( document.book.arriveyear.options[document.book.arriveyear.selectedIndex].text, (document.book.arrivemonth.options[document.book.arrivemonth.selectedIndex].value-1), document.book.arriveday.options[document.book.arriveday.selectedIndex].text );
  var afrejse = new Date( document.book.leaveyear.options[document.book.leaveyear.selectedIndex].text, (document.book.leavemonth.options[document.book.leavemonth.selectedIndex].value-1), document.book.leaveday.options[document.book.leaveday.selectedIndex].text );

  var dageImellem = Math.round( ( afrejse.valueOf() - ankomst.valueOf() ) / ( 1000*60*60*24 ) );


Tak for hjælpen jakoba, havde ikke drøm om det ville være så "let". Jeg var ellers lige ved at kaste mig ud i arrays, og definere hver enkelt måned antal dage osv...
Puha, godt jeg slap for det.
Fortsat god dag, og her er dine points :)
Avatar billede jakoba Nybegynder
11. april 2002 - 23:40 #11
Ja det det Date objekt er dejligt.
Og jeg skal åbenbart check mine ideer om hvordan - virker hvis første er operand er en streng.
takker
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