Avatar billede Slettet bruger
03. april 2009 - 12:32 Der er 5 kommentarer

meget besynderligt problem med timestamp og beregning af antal nætter mellem to datoer

Hej eksperter.

Jeg driver et rejsesite, og oplever en meget underlig fejl, der skal udregnes antal nætter mellem to datoer.

Det lader til at der er 1 dato hvert år, der ikke eksisterer. for perioder hvor en af disse datoer ligger imellem, så bliver antallet af nætter en for lidt? Alle andre perioder fungerer optimalt.

27-3-2010
26-3-2011
24-3-2012
30-3-2013
29-3-2014
28-3-2015

antallet af nætter beregnes ved flg. funktion:

function getNights($arrival,$departure,$all=0) {
  $i=$arrival;
  $j=0;

  while ($i<=$departure) {
    $j++;
    $aNights[$j][tstamp]=$i;
    $aNights[$j][day]=strftime("%d",$i);
    $aNights[$j][month]=strftime("%m",$i);     
    $aNights[$j][year]=strftime("%y",$i);
    $i+=60*60*24;       
  }
   
  return $aNights;

}

herefter tælles antal felter i array når antal nætter skal beregnes.

Nogen der har en forklaring / løsning på dette problem.
Avatar billede Slettet bruger
03. april 2009 - 12:45 #1
måske det har noget at gøre med sommertid/vintertid?

Hvordan kan dette problem løses da?
Avatar billede majbom Novice
04. april 2009 - 07:28 #2
har du en ide om hvilken dag det er den ikke regner med?
Avatar billede Slettet bruger
04. april 2009 - 08:21 #3
ja, disse er dagene de næste år

27-3-2010
26-3-2011
24-3-2012
30-3-2013
29-3-2014
28-3-2015

Til info, løste jeg problemet ved at smide datoerne for de næste 25 år ind i et array, og så for de datoer lægges der kun 23 timer til istedet for 24, så det må have været sommertiden. :)

Lader den lige stå åben lidt, hvis der skulle være nogen med et bedre forslag :)
Avatar billede erikjacobsen Ekspert
04. april 2009 - 11:42 #4
I stedet for at regne på midnat på dine datoer, så kan du regne dem om til fx kl. 12.00 middag.
Avatar billede majbom Novice
04. november 2010 - 11:28 #5
kan vi lukke hér?
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