probleem met datum interval

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Vincent de Groot

Vincent de Groot

24/11/2010 16:34:45
Quote Anchor link
Ik heb onderstaande code gemaakt, maar het gaat niet helemaal goed aan het einde van oktober. Daar wordt er slechts 6 dagen bij opgeteld ipv 7.

Iemand een idee waar het aan kan liggen?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$dateStart
= date("Y-m-d", strtotime("2011-07-05"));
$dateEnd = date("Y-m-d", strtotime("2011-12-31"));
$everyXdays = "7";

while ($dateStart <= $dateEnd) {
    echo "Date: $dateStart <br />";
    $dateStart = date("Y-m-d",strtotime($dateStart) + $everyXdays * 86400);
}

?>


Date: 2011-07-05
Date: 2011-07-12
Date: 2011-07-19
Date: 2011-07-26
Date: 2011-08-02
Date: 2011-08-09
Date: 2011-08-16
Date: 2011-08-23
Date: 2011-08-30
Date: 2011-09-06
Date: 2011-09-13
Date: 2011-09-20
Date: 2011-09-27
Date: 2011-10-04
Date: 2011-10-11
Date: 2011-10-18
Date: 2011-10-25
Date: 2011-10-31
Date: 2011-11-07
Date: 2011-11-14
Date: 2011-11-21
Date: 2011-11-28
Date: 2011-12-05
Date: 2011-12-12
Date: 2011-12-19
Date: 2011-12-26
 
PHP hulp

PHP hulp

12/01/2025 00:48:00
 

24/11/2010 17:21:01
Quote Anchor link
Niet het wiel opnieuw uitvinden:
datetime
 
- SanThe -

- SanThe -

24/11/2010 17:29:31
Quote Anchor link
Toch blijft de vraag staan.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$dateStart
= '2011-10-28';
$dateEnd = '2011-10-31';
$everyXdays = 1;
$time = strtotime($dateStart);

while ($dateStart <= $dateEnd)
{

    $dateStart = date('Y-m-d', $time);
    echo 'Date: ' . $dateStart . '<br />';
    $time += $everyXdays * 86400;
}

?>

Waarom krijg je ook hier geen juiste output, maar 2 keer de 30-ste?

Date: 2011-10-28
Date: 2011-10-29
Date: 2011-10-30
Date: 2011-10-30
Date: 2011-10-31
Date: 2011-11-01
Gewijzigd op 24/11/2010 17:30:11 door - SanThe -
 

24/11/2010 17:34:51
Quote Anchor link
SanThe rekent met strings, dit gaat over het algemeen vaak goed, maar kan dus problemen opleveren.
De TS'er maakt gebruik van 86400 wat dus zoiets is van dat je in seconde een dag erbij gaat doen. strtotime kan ook gewoon er een dag bij optellen. Voor de rest heb ik er niet echt naar gekeken dus geen idee waarom het bij beiden mis gaat.
 
Vincent de Groot

Vincent de Groot

25/11/2010 09:12:42
Quote Anchor link
Ik heb ook nog even verder gekeken. Het gaat mis bij de overgang van zomertijd naar wintertijd, want die dag heeft 90.000 seconden (=25 uur).

Dus dagen er bij op tellen en geen seconden.
Gewijzigd op 25/11/2010 09:13:01 door Vincent de Groot
 

25/11/2010 11:02:02
Quote Anchor link
Inderdaad, al lijkt het mij gewoon handiger om die classes te gebruiken.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.