3 votes

Boucler sur tous les jours d'une plage d'horodatage Unix en PHP

Disons que l'on vous donne deux timestamps Unix comme ceci :

$startDate = 1330581600;
$endDate = 1333170000;

Je veux boucler sur chaque jour de cette plage et produire quelque chose comme ceci :

Start Loop
   Day Time Stamp: [Timestamp for the day within that loop]
End Loop

J'ai essayé de chercher un type de fonction pour faire cela, mais je ne suis pas sûr que ce soit possible.

8voto

Dan Lee Points 7542

Comme j'adore DateTime, DateInterval et DatePeriod, voici ma solution :

$start = new DateTime();
$end   = new DateTime();

$start->setTimestamp(1330581600);
$end->setTimestamp(1333170000);

$period = new DatePeriod($start, new DateInterval('P1D'), $end);

foreach($period as $dt) {
  echo $dt->format('Y-m-d');
  echo PHP_EOL;
}

Cela peut sembler déroutant au premier abord, mais c'est une approche très logique.

Avec DatePériode vous définissez le début et la fin d'une période avec un intervalle d'un jour (consultez le format à l'adresse suivante DateIntervalle ), et ensuite vous pouvez simplement itérer dessus.
Enfin, à chaque itération, vous récupérez un Objet DateTime sur lequel vous pouvez utiliser DateTime::format()

2voto

a sad dude Points 2147
for ($t = $start; $t < $end; $t = strtotime('+1 day', $t)) {
    ...
}

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