Avatar billede mjl Nybegynder
23. december 2013 - 10:42 Der er 8 kommentarer og
1 løsning

Hvorfor returnerer PHP samme dato 2 gange

Jeg bruger følgende :

<?
$firstday = $fra;
$lastday = $til;

$alldays = 0;

for($i = $firstday; $i <= $lastday; $i +=86400) {
echo date("d.m.Y", $i)."<br />";

$alldays++;
}

echo $alldays;
?>

Hvis $fra = 24.10.2013 og $til = 23.11.2013, så returnerer PHP den 27.10.2013 2 gange ...

Sådan her :

24.10.2013
25.10.2013
26.10.2013
27.10.2013
27.10.2013
28.10.2013
29.10.2013 ...

Hvorfor ...!?
Avatar billede keysersoze Guru
23. december 2013 - 10:48 #1
Mon det kan have noget med vintertid at gøre? Hvis du arbejder med datoer bør du ja, arbejde med datoer hele vejen igennem og fx benytte date_add.
Avatar billede mjl Nybegynder
23. december 2013 - 10:53 #2
Jo, det er nok vinter/sommertid - den laver også rod, når startdatoen er i marts ...

date_add?
Avatar billede repox Seniormester
23. december 2013 - 10:58 #3
Det er, som keysersoze siger, fordi der ikke konsekvent er 86400 sekunder i et døgn.

Brug f.eks. DateTime til at lave funktionaliteten i stedet.

<?php

$fra = new DateTime("2013-10-24");
$til = new DateTime("2013-11-23");

while($fra <= $til)
{
    echo $fra->format("d.m.Y").PHP_EOL;
    $fra->add(new DateInterval('P1D'));
}
Avatar billede mjl Nybegynder
23. december 2013 - 11:04 #4
Fatal error: Class 'DateTime' not found ....
Avatar billede repox Seniormester
23. december 2013 - 11:09 #5
Hvilken version af PHP bruger du?!?
Avatar billede mjl Nybegynder
23. december 2013 - 11:19 #6
Nok en der er lidt gammel :o(

PHP Version 5.1.2
Avatar billede repox Seniormester
23. december 2013 - 12:29 #7
Det er nok et af problemerne, ja. PHP version 5.5.7 er jo blevet released, så jeg vil umiddelbart anbefale dig at få opdateret - både pga. de nye features men også pga. de mange sikkerhedsopdateringer.
Avatar billede mjl Nybegynder
23. december 2013 - 13:04 #8
Tak for hjælpen - og god jul !
Avatar billede arne_v Ekspert
28. december 2013 - 23:36 #9
Det lille dirty hack vil vaere at bruge kl. 12:00 fremfor kl. 0:00 i $fra og $til.
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