petit-ourson Posté 12 Avril 2006 Posté 12 Avril 2006 Bonjour, http://fr3.php.net/manual/fr/function.strtotime.php Je cherche à obtenir à partir de la fonction strtotime() le premier jeudi du mois suivant. Donc par exemple, il faudrait que je tombe sur le 04 mai tout au long du mois d'avril, puis le 1 juin tout au long du mois de mai, etc, etc. Ca doit être quelques chose qui ressemble à cela, mais j'arrive pas à me fixer au début du mois ;-( strtotime(+ 1 month first thursday) Merci d'avance ;o)
NorSeb Posté 12 Avril 2006 Posté 12 Avril 2006 Salut, Ta question est pour le moins originale... Tu as essayé "next month first thursday" ?
TheRec Posté 12 Avril 2006 Posté 12 Avril 2006 Bonjour, <?php echo date("Y-m-d",strtotime("+1 month thursday",strtotime(date("Y-m-01 00:00:00")))); ?> Ceci devrait convenir... d'après le manuel de GNU il est mieux de définir l'heure à une valeur fixe car des problèmes de décalage peuvent apparaître lorsque la date coïncide avec les changements d'heure d'hiver/été (DST)... **EDIT** Je te laisse enlever la fonction "date" si tu veux utiliser le timestamp directement
petit-ourson Posté 12 Avril 2006 Auteur Posté 12 Avril 2006 Salut, Ta question est pour le moins originale... Tu as essayé "next month first thursday" ? <{POST_SNAPBACK}> Ca me sort le 15/06/2006 alors que "+ 1 month first thursday" s'approcherai plus du bon résultat soit le 18/05/2006. En fait il ajoute un mois (12 mais) et cherche le premier jeudi après cette date.
petit-ourson Posté 12 Avril 2006 Auteur Posté 12 Avril 2006 Bonjour, <?php echo date("Y-m-d",strtotime("+1 month thursday",strtotime(date("Y-m-01 00:00:00")))); ?> Ceci devrait convenir... d'après le manuel de GNU il est mieux de définir l'heure à une valeur fixe car des problèmes de décalage peuvent apparaître lorsque la date coïncide avec les changements d'heure d'hiver/été (DST)... NorSeb> "next" n'est (malheureusement) pas une valeur acceptée par GNU comme élément relatif pour définir une date... **EDIT** Je te laisse enlever la fonction "date" si tu veux utiliser le timestamp directement <{POST_SNAPBACK}> oui il y a cette solution mais j'essaie de voir si il n'y a pas une solution sans être obligé de redefinir une date. Je comptais stocké "+1 month thursday" dans ma base et utiliser uniquement la date du jour car peut être que pour certains enregistrments ca sera juste "+2 weeks", ou "+2 days" ou ...
Dan Posté 12 Avril 2006 Posté 12 Avril 2006 print strftime("%A, %d/%m/%Y",strtotime("next month first thursday",mktime(0,0,0,strftime("%m"),1,strftime("%Y")))); Dan
TheRec Posté 12 Avril 2006 Posté 12 Avril 2006 Tu ne redéfini pas la date...mais le référentiel pour effectuer le calcul... si tu fais "+1 month" à une date, par exemple le 31 janvier, si tu es dans une année bissextile tu obtiendra le 2 mars...si c'est une année normale tu obtiendra le 3 mars... car il calcul le 31 février, qui n'existe pas et utilise la différence par rapport au dernier jour du mois... d'où la nécessité de fixé le début du mois qui est commun à tous les mois...
petit-ourson Posté 12 Avril 2006 Auteur Posté 12 Avril 2006 oui un jour (et le mois et année de la date du jour) de référence dans le cas où j'utilise les mois et si j'utilise des jours et des semaines, j'utilise la date du jour... Bah je suis déçu de cette fonction ;-(
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant