Ajouter une semaine à une date

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Ajouter une semaine à une date

Re: Ajouter une semaine à une date

par stealth35 » 02 sept. 2011, 00:33

oui strtotime fonctionne tres bien

Re: Ajouter une semaine à une date

par Baloo » 01 sept. 2011, 21:26

Merci pour toutes ces propositions.

Je pense effectivement que l'utilisation de strtotime peut éventuellement résoudre mon problème, tant que la répétition se compte en semaine.

Et si je fais : $uneSemainePlusTard = strtotime('+$xxx days',date('U',$dateDeDepart)); est-ce que ça marchera? On passe l'heure d'été/hiver?

Je vais essayer.

Merci chers amis de la jungle!!!

Re: Ajouter une semaine à une date

par Mazarini » 01 sept. 2011, 10:33

Bonjour,

J'avais déjà vu ce problème sur un forum il y a pas mal de temps. Le problème est lié au passage de l'heure d'été à l'heure d'hiver. Si tu affiche tes dates avec l'heure, tu va passer du lundi à 00h au dimanche suivant à 23h.

Une solution simple est de se positionner à 12h avant de faire les calculs. Le passage de 12h à 11h n'a pas le même impact. Il faut bien entendu tronqué la date après calcul en supprimant les heures.

Autrement, il me semble que dans les fonctions d'ajout sur les dates il y a une possibilité d'ignorer la distinction heure d'été/heure d'hiver.

Re: Ajouter une semaine à une date

par moogli » 01 sept. 2011, 08:24

Merci mon cher Moogli.
Malheureusement, mon serveur est en php 5.0 et je ne puis pas le changer (serveur Free). Donc cette fonction n'est pas reconnue. Ou alors je l'utilise mal?
(PHP 5 >= 5.3.0) :/

effectivement free est à la bourre ^^

a tu essayé l'exemple 3 de la doc de la fonction date ?
<?php
$tomorrow  = mktime(0, 0, 0, date("m")  , date("d")+1, date("Y"));
$lastmonth = mktime(0, 0, 0, date("m")-1, date("d"),   date("Y"));
$nextyear  = mktime(0, 0, 0, date("m"),   date("d"),   date("Y")+1);
?>
sinon tu peux voir la chose avec strtotime
avec, par exemple, $uneSemainePlusTard = strtotime('+1 week',date('U',$dateDeDepart));
et tu boucle dessus.

@+

Re: Ajouter une semaine à une date

par Baloo » 01 sept. 2011, 02:02

Merci mon cher Moogli.

Malheureusement, mon serveur est en php 5.0 et je ne puis pas le changer (serveur Free). Donc cette fonction n'est pas reconnue. Ou alors je l'utilise mal?

En tout cas c'est bien dommage car ça aurait été super simple, rapide, efficace aussi sans doute...

Auriez vous une autre idée??? Je viens de faire des tests, et quand j'ajoute un jour avec ma méthode au 30/10/2011, cela donne le 30/10/2011!!! Pour les jours suivants c'est bon par contre.

Merci d'avance.

Re: Ajouter une semaine à une date

par moogli » 31 août 2011, 22:53

salut,

regarde du coté de la classe datetime
et plus particulièrement du coté de la méthode add


@+

Ajouter une semaine à une date

par Baloo » 31 août 2011, 21:48

Bonjour,

J'ai un programme qui enregistre un même évènement toutes les semaines pendant une certaine durée. Par exemple un événement qui a lieu un mardi doit être enregistrer tous les mardis entre deux dates. Donc j'ai une variable de type date, et je lui ajoute 7 jours jusqu'à ce que j'arrive à la date souhaitée. J'utilise cet algorithme :


$ladate=$ladate+$repetjr*60*60*24; où $ladate est la date à laquelle je me trouve actuellement (elle est donc incrémentée régulièrement); $repetjr est le nombre de jour que je dois rajouter. Dans l'exemple que je prends, $repetjr est égal à 7 puisque j'ajoute 7 jours à chaque fois.


Cette commande est évidemment dans une boucle.


for ($i = 0; $i <= 340/$repetjr; $i++) {
$ladate=$ladate+$repetjr*60*60*24;
$date=date('Y-m-d',$ladate);
$enreg=mysql_db_query(***,"INSERT INTO **** VALUES (*****)");
}


Ce qui me répète un événement pendant environ 1 an (je n'ai pas besoin d'être précis).

Un phénomène très étrange se produit. Lorsque j'ajoute 7 jours à la date du 25/10/2011, je me retrouve avec le 31/10/2011 au lieu du 1/11/2011. Et cela pour toutes les dates qui viennent également après. Un retour à la normale se produit à partir du 25/03/2012 je crois.

Cela correspond étrangement aux heures d'été et d'hiver non? Pourquoi? Que se passe-t-il? Et comment réglé le problème!!!!

Mille mercis pour votre aide.