Le dernier jour du mois suivant en PHP

30/09/2008

Allez un ticket hyper-rapide qui pourra rendre service à quelques uns. //Comment récupérer le __dernier jour du mois suivant__ ?// J’ai vu passer des dizaines de solutions sur le net, cela dit beaucoup ont oublié de lire la doc :)

Le dernier jour du mois suivant est expliqué en bas de la page de documentation de la fonction “mktime”, grosso-modo le dernier jour du mois est représenté dans mktime par le chiffre “0”. **Or, cela nous fait reculer d’un mois** la valeur du mktime puisque le chiffre “0” correspond au jour précédent le 1er du mois.

Si nous étions le 1er septembre, mktime avec la valeur du jour du mois “9” à 0 donnerait en fait le 31 Aout. Donc le 00/09/2008 correspond au 31/08/2008…

Dans ce cas, on doit prendre le mois courant (avec date(‘n’) et non date(’m’) pour avoir un entier sans 0 devant), puis lui ajouter non pas “1” mais “2”. Avec ce timestamp récupéré, nous pourrons recréer une date facilement:

` //le timestamp du dernier jour du mois suivant $lastdaynextmonth = mktime(0,0,0,date(‘n’)+2,0,date(‘Y’));

//dd/mm/YYYY $date = date(’d/m/Y’,$lastdaynextmonth); `

En gros si nous sommes le 15 septembre 2008, je cherche la date du 00/11/2008 qui me donnera le 31/10/2008… Plus de soucis avec le 30, 31 ou les 28 et 29 du mois de février, on a tout d’un seul coup.

C’est pas plus compliqué… C’est cool PHP hein ?

Ça peut vous intéresser aussi


Mise à jour du blog en Go

Si vous connaissiez mon blog, vous avez remarqué qu’à ...


Exemple d'application d'un SharedObject en PHP

Je vous l’ai annoncé il y a quelques jours,...


vim est un IDE PHP

Après pas mal de temps passé sur Eclipse, la lourdeur ...


Docker Apache Mysql PHP

Ce matin un collègue me demande “comment tu ferais ...

Merci de m'aider à financer mes services

Si vous avez apprécié cet article, je vous serai reconnaissant de m'aider à me payer une petite bière :)

Si vous voulez en savoir plus sur l'utilisation de flattr sur mon blog, lisez cette page: Ayez pitié de moi

Commentaires

Ajouter un commentaire

Gérald - 30/09/2008

Je suis super deçu, je pensais que strtotime (‘+2 month first day -1 day’) répondait au besoin…..

Ce n’est pas le cas (je viens de tester) car il semble s’embrouiller un peu les pinceaux avec les 28/29/30/31.

Genre le “first day” de +2month au 30/09/08 donne le premier décembre…. bizarre…. il doit pourtant bien y avoir une syntaxe capable de nous sortir ça :-)

Metal3d - 30/09/2008

Héhé, en même temps je corrige mon billet parce que le mois d’octobre à 31 jours :)

Marrant je pensais que le strtotime que tu donnes en exemple fonctionnait… Faut que je regarde tiens :)

En fait, strtotime est parfois ésotérique, mystique, voir ensorcelé… j’ai tenté des syntaxe de la mort qui m’a donné des jours complètement fous…

Ajouter un commentaire

(*) Votre e-mail ne sera ni revendu, ni rendu public, ni utilisé pour vous proposer des mails commerciaux. Il n'est utilisé que pour vous contacter en cas de souci avec le contenu du commentaire, ou pour vous prévenir d'un nouveau commentaire si vous avez coché la case prévue à cet effet.