soucis avec timestamp

jerome572
Invité n'ayant pas de compte PHPfrance

24 juil. 2014, 18:53

Bonjour,

Je souhaiterais à l'aide des timestamps afficher la date de tous les lundi.

Pour cela je recupère le lundi de la semaine courante, je converti cette date en timestamp puis j'ajoute le nombre de seconde d'une semaine.

Et la je me rend compte qu'il y a un soucis fin octobre mais uniquement à cette date
$timestamp = 1412546400;
for($i =1 ; $i<10; $i++){
   echo date('d/m/Y', $timestamp) . ' - ' . $timestamp . '<br/>';
   $timestamp += 7*24*60*60;
 }
Quelqu'un sait-il pourquoi ? Merci d'avance

ViPHP
xTG
ViPHP | 7331 Messages

24 juil. 2014, 19:58

05/10/2014 - 1412546400<br/><br />
12/10/2014 - 1413151200<br/><br />
19/10/2014 - 1413756000<br/><br />
26/10/2014 - 1414360800<br/><br />
02/11/2014 - 1414965600<br/><br />
Où est le souci ?
Ce sont tous des dimanches dans mon calendrier, aucun jour de sauté.

Invité
Invité n'ayant pas de compte PHPfrance

24 juil. 2014, 21:18

C'est sensé donner tous les lundi.

Chez moi ca me donne

06/10/2014 - 1412546400
13/10/2014 - 1413151200
20/10/2014 - 1413756000
26/10/2014 - 1414360800
02/11/2014 - 1414965600
09/11/2014 - 1415570400
16/11/2014 - 1416175200
23/11/2014 - 1416780000
30/11/2014 - 1417384800

Il y a toujours bien 7 jours d'ecart sauf entre le 20/10 et le 26/10

Mammouth du PHP | 571 Messages

24 juil. 2014, 23:38

C'est sensé donner tous les lundi.

Chez moi ca me donne

06/10/2014 - 1412546400
13/10/2014 - 1413151200
20/10/2014 - 1413756000
26/10/2014 - 1414360800
02/11/2014 - 1414965600
09/11/2014 - 1415570400
16/11/2014 - 1416175200
23/11/2014 - 1416780000
30/11/2014 - 1417384800

Il y a toujours bien 7 jours d'ecart sauf entre le 20/10 et le 26/10
il y a également un autre problème concernant tout le mois de novembre dont les jours de la semaine correspondent à dimanche et non lundi comme tu le souhaite.
Je te propose de ne pas convertir la date de depart en timestamp pour pouvoir utiliser DateInterval:

$dateDebut = new DateTime( '2014-10-06' ); //la date de départ
$dateFin = new DateTime( '2014-11-30' );
$dateFin->modify( '+1 day' );//on ajoute 1j à dateFin pour éviter que la condition d'arrêt de la boucle oit le 30-11-2014


$interval = new DateInterval('P7D');//7j d'intervalle
$range = new DatePeriod($dateDebut, $interval ,$dateFin);

//parcours des des dates allant de dateDebut à dateFin avec un incrément de 7j
foreach($range as $date){
echo  $date->format("l, d-m-Y") , "<br>";
}


jerome572
Invité n'ayant pas de compte PHPfrance

25 juil. 2014, 16:33

Le soucis venait du changement d'horaire.

Je passer donc du 20/10 0h00 au 26/10 23h00