Hallo

Als ik de volgende code uitvoer in Zend voor bv 1-1-2012 krijg ik van 26 t/m 31 maart onverwachte resultaten. Hoe kan dat?

Code:
for($i = 1;$i <365;$i ++){
$this->_einddatum = clone $this->startdatum;
$this->_einddatum->addYear(1);
echo($this->startdatum->toString("yyyy-MM-d").' - '.$this->_einddatum->toString("yyyy-MM-d").' <br/>' );
$this->startdatum->addDay(1);
}

resultaat:
2012-01-1 - 2013-01-1
2012-01-2 - 2013-01-2
2012-01-3 - 2013-01-3
2012-01-4 - 2013-01-4
2012-01-5 - 2013-01-5
2012-01-6 - 2013-01-6
2012-01-7 - 2013-01-7
2012-01-8 - 2013-01-8
2012-01-9 - 2013-01-9
2012-01-10 - 2013-01-10
2012-01-11 - 2013-01-11
2012-01-12 - 2013-01-12
2012-01-13 - 2013-01-13
2012-01-14 - 2013-01-14
2012-01-15 - 2013-01-15
2012-01-16 - 2013-01-16
2012-01-17 - 2013-01-17
2012-01-18 - 2013-01-18
2012-01-19 - 2013-01-19
2012-01-20 - 2013-01-20
2012-01-21 - 2013-01-21
2012-01-22 - 2013-01-22
2012-01-23 - 2013-01-23
2012-01-24 - 2013-01-24
2012-01-25 - 2013-01-25
2012-01-26 - 2013-01-26
2012-01-27 - 2013-01-27
2012-01-28 - 2013-01-28
2012-01-29 - 2013-01-29
2012-01-30 - 2013-01-30
2012-01-31 - 2013-01-31
2012-02-1 - 2013-02-1
2012-02-2 - 2013-02-2
2012-02-3 - 2013-02-3
2012-02-4 - 2013-02-4
2012-02-5 - 2013-02-5
2012-02-6 - 2013-02-6
2012-02-7 - 2013-02-7
2012-02-8 - 2013-02-8
2012-02-9 - 2013-02-9
2012-02-10 - 2013-02-10
2012-02-11 - 2013-02-11
2012-02-12 - 2013-02-12
2012-02-13 - 2013-02-13
2012-02-14 - 2013-02-14
2012-02-15 - 2013-02-15
2012-02-16 - 2013-02-16
2012-02-17 - 2013-02-17
2012-02-18 - 2013-02-18
2012-02-19 - 2013-02-19
2012-02-20 - 2013-02-20
2012-02-21 - 2013-02-21
2012-02-22 - 2013-02-22
2012-02-23 - 2013-02-23
2012-02-24 - 2013-02-24
2012-02-25 - 2013-02-25
2012-02-26 - 2013-02-26
2012-02-27 - 2013-02-27
2012-02-28 - 2013-02-28
2012-02-29 - 2013-03-1
2012-03-1 - 2013-03-1
2012-03-2 - 2013-03-2
2012-03-3 - 2013-03-3
2012-03-4 - 2013-03-4
2012-03-5 - 2013-03-5
2012-03-6 - 2013-03-6
2012-03-7 - 2013-03-7
2012-03-8 - 2013-03-8
2012-03-9 - 2013-03-9
2012-03-10 - 2013-03-10
2012-03-11 - 2013-03-11
2012-03-12 - 2013-03-12
2012-03-13 - 2013-03-13
2012-03-14 - 2013-03-14
2012-03-15 - 2013-03-15
2012-03-16 - 2013-03-16
2012-03-17 - 2013-03-17
2012-03-18 - 2013-03-18
2012-03-19 - 2013-03-19
2012-03-20 - 2013-03-20
2012-03-21 - 2013-03-21
2012-03-22 - 2013-03-22
2012-03-23 - 2013-03-23
2012-03-24 - 2013-03-24
2012-03-25 - 2013-03-25
2012-03-26 - 2013-03-25
2012-03-27 - 2013-03-26
2012-03-28 - 2013-03-27
2012-03-29 - 2013-03-28
2012-03-30 - 2013-03-29
2012-03-31 - 2013-03-30
2012-04-1 - 2013-04-1
2012-04-2 - 2013-04-2
2012-04-3 - 2013-04-3
2012-04-4 - 2013-04-4
2012-04-5 - 2013-04-5
2012-04-6 - 2013-04-6
2012-04-7 - 2013-04-7
2012-04-8 - 2013-04-8
2012-04-9 - 2013-04-9
2012-04-10 - 2013-04-10
2012-04-11 - 2013-04-11
2012-04-12 - 2013-04-12
2012-04-13 - 2013-04-13
2012-04-14 - 2013-04-14
2012-04-15 - 2013-04-15
2012-04-16 - 2013-04-16
2012-04-17 - 2013-04-17
2012-04-18 - 2013-04-18
2012-04-19 - 2013-04-19
2012-04-20 - 2013-04-20
2012-04-21 - 2013-04-21
2012-04-22 - 2013-04-22
2012-04-23 - 2013-04-23
2012-04-24 - 2013-04-24
2012-04-25 - 2013-04-25
2012-04-26 - 2013-04-26
2012-04-27 - 2013-04-27
2012-04-28 - 2013-04-28
2012-04-29 - 2013-04-29
2012-04-30 - 2013-04-30
2012-05-1 - 2013-05-1
2012-05-2 - 2013-05-2
2012-05-3 - 2013-05-3
2012-05-4 - 2013-05-4
2012-05-5 - 2013-05-5
2012-05-6 - 2013-05-6
2012-05-7 - 2013-05-7
2012-05-8 - 2013-05-8
2012-05-9 - 2013-05-9
2012-05-10 - 2013-05-10
2012-05-11 - 2013-05-11
2012-05-12 - 2013-05-12
2012-05-13 - 2013-05-13
2012-05-14 - 2013-05-14
2012-05-15 - 2013-05-15
2012-05-16 - 2013-05-16
2012-05-17 - 2013-05-17
2012-05-18 - 2013-05-18
2012-05-19 - 2013-05-19
2012-05-20 - 2013-05-20
2012-05-21 - 2013-05-21
2012-05-22 - 2013-05-22
2012-05-23 - 2013-05-23
2012-05-24 - 2013-05-24
2012-05-25 - 2013-05-25
2012-05-26 - 2013-05-26
2012-05-27 - 2013-05-27
2012-05-28 - 2013-05-28
2012-05-29 - 2013-05-29
2012-05-30 - 2013-05-30
2012-05-31 - 2013-05-31
2012-06-1 - 2013-06-1
2012-06-2 - 2013-06-2
2012-06-3 - 2013-06-3
2012-06-4 - 2013-06-4
2012-06-5 - 2013-06-5
2012-06-6 - 2013-06-6
2012-06-7 - 2013-06-7
2012-06-8 - 2013-06-8
2012-06-9 - 2013-06-9
2012-06-10 - 2013-06-10
2012-06-11 - 2013-06-11
2012-06-12 - 2013-06-12
2012-06-13 - 2013-06-13
2012-06-14 - 2013-06-14
2012-06-15 - 2013-06-15
2012-06-16 - 2013-06-16
2012-06-17 - 2013-06-17
2012-06-18 - 2013-06-18
2012-06-19 - 2013-06-19
2012-06-20 - 2013-06-20
2012-06-21 - 2013-06-21
2012-06-22 - 2013-06-22
2012-06-23 - 2013-06-23
2012-06-24 - 2013-06-24
2012-06-25 - 2013-06-25
2012-06-26 - 2013-06-26
2012-06-27 - 2013-06-27
2012-06-28 - 2013-06-28
2012-06-29 - 2013-06-29
2012-06-30 - 2013-06-30
2012-07-1 - 2013-07-1
2012-07-2 - 2013-07-2
2012-07-3 - 2013-07-3
2012-07-4 - 2013-07-4
2012-07-5 - 2013-07-5
2012-07-6 - 2013-07-6
2012-07-7 - 2013-07-7
2012-07-8 - 2013-07-8
2012-07-9 - 2013-07-9
2012-07-10 - 2013-07-10
2012-07-11 - 2013-07-11
2012-07-12 - 2013-07-12
2012-07-13 - 2013-07-13
2012-07-14 - 2013-07-14
2012-07-15 - 2013-07-15
2012-07-16 - 2013-07-16
2012-07-17 - 2013-07-17
2012-07-18 - 2013-07-18
2012-07-19 - 2013-07-19
2012-07-20 - 2013-07-20
2012-07-21 - 2013-07-21
2012-07-22 - 2013-07-22
2012-07-23 - 2013-07-23
2012-07-24 - 2013-07-24
2012-07-25 - 2013-07-25
2012-07-26 - 2013-07-26
2012-07-27 - 2013-07-27
2012-07-28 - 2013-07-28
2012-07-29 - 2013-07-29
2012-07-30 - 2013-07-30
2012-07-31 - 2013-07-31
2012-08-1 - 2013-08-1
2012-08-2 - 2013-08-2
2012-08-3 - 2013-08-3
2012-08-4 - 2013-08-4
2012-08-5 - 2013-08-5
2012-08-6 - 2013-08-6
2012-08-7 - 2013-08-7
2012-08-8 - 2013-08-8
2012-08-9 - 2013-08-9
2012-08-10 - 2013-08-10
2012-08-11 - 2013-08-11
2012-08-12 - 2013-08-12
2012-08-13 - 2013-08-13
2012-08-14 - 2013-08-14
2012-08-15 - 2013-08-15
2012-08-16 - 2013-08-16
2012-08-17 - 2013-08-17
2012-08-18 - 2013-08-18
2012-08-19 - 2013-08-19
2012-08-20 - 2013-08-20
2012-08-21 - 2013-08-21
2012-08-22 - 2013-08-22
2012-08-23 - 2013-08-23
2012-08-24 - 2013-08-24
2012-08-25 - 2013-08-25
2012-08-26 - 2013-08-26
2012-08-27 - 2013-08-27
2012-08-28 - 2013-08-28
2012-08-29 - 2013-08-29
2012-08-30 - 2013-08-30
2012-08-31 - 2013-08-31
2012-09-1 - 2013-09-1
2012-09-2 - 2013-09-2
2012-09-3 - 2013-09-3
2012-09-4 - 2013-09-4
2012-09-5 - 2013-09-5
2012-09-6 - 2013-09-6
2012-09-7 - 2013-09-7
2012-09-8 - 2013-09-8
2012-09-9 - 2013-09-9
2012-09-10 - 2013-09-10
2012-09-11 - 2013-09-11
2012-09-12 - 2013-09-12
2012-09-13 - 2013-09-13
2012-09-14 - 2013-09-14
2012-09-15 - 2013-09-15
2012-09-16 - 2013-09-16
2012-09-17 - 2013-09-17
2012-09-18 - 2013-09-18
2012-09-19 - 2013-09-19
2012-09-20 - 2013-09-20
2012-09-21 - 2013-09-21
2012-09-22 - 2013-09-22
2012-09-23 - 2013-09-23
2012-09-24 - 2013-09-24
2012-09-25 - 2013-09-25
2012-09-26 - 2013-09-26
2012-09-27 - 2013-09-27
2012-09-28 - 2013-09-28
2012-09-29 - 2013-09-29
2012-09-30 - 2013-09-30
2012-10-1 - 2013-10-1
2012-10-2 - 2013-10-2
2012-10-3 - 2013-10-3
2012-10-4 - 2013-10-4
2012-10-5 - 2013-10-5
2012-10-6 - 2013-10-6
2012-10-7 - 2013-10-7
2012-10-8 - 2013-10-8
2012-10-9 - 2013-10-9
2012-10-10 - 2013-10-10
2012-10-11 - 2013-10-11
2012-10-12 - 2013-10-12
2012-10-13 - 2013-10-13
2012-10-14 - 2013-10-14
2012-10-15 - 2013-10-15
2012-10-16 - 2013-10-16
2012-10-17 - 2013-10-17
2012-10-18 - 2013-10-18
2012-10-19 - 2013-10-19
2012-10-20 - 2013-10-20
2012-10-21 - 2013-10-21
2012-10-22 - 2013-10-22
2012-10-23 - 2013-10-23
2012-10-24 - 2013-10-24
2012-10-25 - 2013-10-25
2012-10-26 - 2013-10-26
2012-10-27 - 2013-10-27
2012-10-28 - 2013-10-27
2012-10-29 - 2013-10-29
2012-10-30 - 2013-10-30
2012-10-31 - 2013-10-31
2012-11-1 - 2013-11-1
2012-11-2 - 2013-11-2
2012-11-3 - 2013-11-3
2012-11-4 - 2013-11-4
2012-11-5 - 2013-11-5
2012-11-6 - 2013-11-6
2012-11-7 - 2013-11-7
2012-11-8 - 2013-11-8
2012-11-9 - 2013-11-9
2012-11-10 - 2013-11-10
2012-11-11 - 2013-11-11
2012-11-12 - 2013-11-12
2012-11-13 - 2013-11-13
2012-11-14 - 2013-11-14
2012-11-15 - 2013-11-15
2012-11-16 - 2013-11-16
2012-11-17 - 2013-11-17
2012-11-18 - 2013-11-18
2012-11-19 - 2013-11-19
2012-11-20 - 2013-11-20
2012-11-21 - 2013-11-21
2012-11-22 - 2013-11-22
2012-11-23 - 2013-11-23
2012-11-24 - 2013-11-24
2012-11-25 - 2013-11-25
2012-11-26 - 2013-11-26
2012-11-27 - 2013-11-27
2012-11-28 - 2013-11-28
2012-11-29 - 2013-11-29
2012-11-30 - 2013-11-30
2012-12-1 - 2013-12-1
2012-12-2 - 2013-12-2
2012-12-3 - 2013-12-3
2012-12-4 - 2013-12-4
2012-12-5 - 2013-12-5
2012-12-6 - 2013-12-6
2012-12-7 - 2013-12-7
2012-12-8 - 2013-12-8
2012-12-9 - 2013-12-9
2012-12-10 - 2013-12-10
2012-12-11 - 2013-12-11
2012-12-12 - 2013-12-12
2012-12-13 - 2013-12-13
2012-12-14 - 2013-12-14
2012-12-15 - 2013-12-15
2012-12-16 - 2013-12-16
2012-12-17 - 2013-12-17
2012-12-18 - 2013-12-18
2012-12-19 - 2013-12-19
2012-12-20 - 2013-12-20
2012-12-21 - 2013-12-21
2012-12-22 - 2013-12-22
2012-12-23 - 2013-12-23
2012-12-24 - 2013-12-24
2012-12-25 - 2013-12-25
2012-12-26 - 2013-12-26
2012-12-27 - 2013-12-27
2012-12-28 - 2013-12-28
2012-12-29 - 2013-12-29
Kleine aanvulling: De volgende code laat zien dat er in de betreffende 5 dagen een uur minder is??
$this->startdatum->addHour(6);
for($i = 1;$i <365;$i ++){
$this->_einddatum = clone $this->startdatum;
$this->_einddatum->addYear(1);
echo($this->startdatum->toString("yyyy-MM-d HH-mm").' - '.$this->_einddatum->toString("yyyy-MM-d HH-mm").' <br/>' );
$this->startdatum->addDay(1);
}
geeft het volgende resultaat: (alleen rond 26 maart getoond en 27 oktober.)
Wintertijd probleem???

2012-03-23 06-00 - 2013-03-23 06-00
2012-03-24 06-00 - 2013-03-24 06-00
2012-03-25 06-00 - 2013-03-25 05-00
2012-03-26 06-00 - 2013-03-26 05-00
2012-03-27 06-00 - 2013-03-27 05-00
2012-03-28 06-00 - 2013-03-28 05-00
2012-03-29 06-00 - 2013-03-29 05-00
2012-03-30 06-00 - 2013-03-30 05-00
2012-03-31 06-00 - 2013-03-31 06-00
2012-04-1 06-00 - 2013-04-1 06-00
2012-04-2 06-00 - 2013-04-2 06-00
2012-04-3 06-00 - 2013-04-3 06-00
2012-04-4 06-00 - 2013-04-4 06-00
...
2012-10-25 06-00 - 2013-10-25 06-00
2012-10-26 06-00 - 2013-10-26 06-00
2012-10-27 06-00 - 2013-10-27 05-00
2012-10-28 06-00 - 2013-10-28 06-00
2012-10-29 06-00 - 2013-10-29 06-00

[size=xsmall]Toevoeging op 19/11/2013 10:36:14:[/size]

Is denk ik inderdaad een zomertijd probleem, maar waarom 6 dagen?
Dos Moonen op 19/11/2013 10:30:47

dingen zoals zomertijd, schrikkeldag, schrikkelseconden en was nog andere dingen waar ik niet van op de hoogte ben.


In het jaar 8228 zal er een 30 februari zijn :)


------

Mijn code heeft dat probleem niet
<?php
$start = new Datetime('2012-01-01 00:06:00');
for($i = 1;$i <365;$i ++) {
$stop = clone $start;
$stop->modify('+1 YEAR');
echo $start->format('Y-m-d H:i:s') .' - '. $stop->format('Y-m-d H:i:s') .'<br>';
$start->modify('+1 DAY');
}
?>
Het is wel toevallig dat de zomertijd in 2012 op 25 maart in ging en in 2013 op 31 maart.....

Blijkbaar is dat dus inderdaad waar het misgaat. Blijkbaar berekent Zend het verschil in dagen op basis van de verstreken uren en dan krijg je dit soort rare dingen. Zoals eerder al gemeld, datum berekeningen zijn complexe zaken met veel valkuilen.
Met de Datetime class kom ik zo goed als nooit dingen tegen die ik vreemd vind of niet verwacht.
zie vorige post
Met de extra 6 uur is mijn probleem wel opgelost, het ging mij om de juiste dag. Ik zal in het gevolg Datetime class gebruiken.

Blijft toch raar....

Reageren