2 votes

DatePeriod retourne un objet vide

En utilisant le code de cet article https://stackoverflow.com/a/4312630/257629

J'obtiens un objet vide lorsque j'essaie d'utiliser la fonction DatePeriod() . Mon PHP est en version 5.4.3 et je ne vois pas d'erreur. Le site DateTime y DateInterval semblent renvoyer les objets corrects, mais lorsqu'on les passe à la fonction DatePeriod je me retrouve avec un objet vide. ( debug vient de CakePHP et sort le contenu de la variable).

// values passed from form, to a function
// $arrival = 2013-09-05
// $departure = 2013-08-16

$start = new DateTime($arrival);
/*
object(DateTime) {
date => '2013-09-05 00:00:00'
timezone_type => (int) 3
timezone => 'UTC'
}
*/

$interval = new DateInterval('P1D');
/*
object(DateInterval) {
    y => (int) 0
    m => (int) 0
    d => (int) 1
    h => (int) 0
    i => (int) 0
    s => (int) 0
    invert => (int) 0
    days => false
}
*/

$end = new DateTime($departure);
/*
object(DateTime) {
date => '2013-08-16 00:00:00'
timezone_type => (int) 3
timezone => 'UTC'
}
*/

$period = new DatePeriod($start, $interval, $end);

debug($period);
/*
object(DatePeriod) {

}
*/

foreach ($period as $date) {
    echo $date->format('Y-m-d')."\n";
}

1voto

som Points 4614
$arrival = 2013-09-05
$departure = 2013-08-16

L'arrivée n'est pas supérieure au départ. Si vous définissez $arrival = 2013-08-05 . La sortie sera alors

2013-08-05
2013-08-06
2013-08-07
2013-08-08
2013-08-09
2013-08-10
2013-08-11
2013-08-12
2013-08-13
2013-08-14
2013-08-15

1voto

NDM Points 3541

$end la date est antérieure à $start date parce que vous avez mélangé $arrival y $departure vars

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X