Le dernier jour du mois suivant en PHP
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:
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 ?
Trackbacks
Pour ajouter un trackback (retrolien) sur ce ticket, utilisez cette adresse: http://www.metal3d.org/index.php/trackback/default/tb?id=blog%2F124

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 :-)
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...