Récupérer le mois précédent ?

Petit nouveau ! | 36 Messages

31 Oct 2012, 15:09

Bonjour,

Je souhaiterai récupérer tous les jours de l'année le l'année + mois précédent de cette forme : 2012-09

Beaucoup de manière de faire celà, mais toutes sont bugées

date('Y-m',strtotime('last month')); => bug le 31 janvier
date('Y-m',mktime(0, 0, 0, date("m")-1,date("d"), date("Y"))); => bug aussi avec le mois de février de souvenir
date('Y-m',mktime(0, 0, 0, date("m"),date("d")-date("t"), date("Y")) )); => trouvé sur le net mais bug également.

Actuellement j'utilise date('Y-m',strtotime('last month')); mais aujourd'hui 31 octobre ça donne 2012-10 au lieu de donner 2012-09.

Si quelqu'un a la solution, je suis preneur.

Merci.

ViPHP
ViPHP | 2528 Messages

31 Oct 2012, 16:40

date('Y-m',mktime(12, 0, 0, date("m")-1,1, date("Y")));

Le 12h permet de se prémunir des problèmes lié aux heures été/hiver (ou utiliser le 15 par exemple comme jour)
Il ne faut pas prendre la date du jour, mais 01 (ou n'importe <= 28) : 31/06/2012 => 01/07/2012 donc reste juin comme mois précédent

ou
date('Y-m',mktime(12, 0, 0, date("m"),0, date("Y")));


Remarque sur heures d'été/hivers : quand on travail sur les dates avec mktime on travail à 0h. Il arrive alors que l'on se retrouve à 23h après transformation et donc que le résultat est faux.

Petit nouveau ! | 36 Messages

03 Nov 2012, 20:38

Ah super je te remercie bien :)