date('Y-m', strtotime('2008-02')) = '2008-03'
mercredi 31 décembre 2008 à 11:28 (Julien Tartarin)
Ça peut paraître incroyable mais pourtant c'est vrai :
date('Y-m', strtotime('2008-02')) = '2008-03'
Du moins, les 29 (sauf si l'année est bissextile), 30 et 31 de chaque mois. Il semblerait que strtotime remplace l'absence de numéro de jour par la date du jour courant. En ce qui me concerne, je m'attendais plutôt à ce qu'il considère ça comme le jour 0, jour 1 au pire.
La même règle est valable pour les mois à 30 jours parsés un 31...

#1 Le mercredi 31 décembre 2008 à 12:53, par Rano
Le "jour 0", ca donnerait 2008-01. Je pensais aussi qu'il prenait le jour 1. Tu sais si c'est un bug ou si c'est fait exprès ?
#2 Le mercredi 31 décembre 2008 à 13:26, par Julien Tartarin
Ah oui effectivement...
Ca découle de la possibilité de passer "next monday" en paramètre, auquel cas le calcul se fait par rapport au timestamp passé OU au timestamp courant si rien n'est indiqué. Par contre rien ni dans la doc (et le code est un peu obscur...) n'indique ce comportement. Donc c'est plutôt un bug mais pas tout à fait...
#3 Le mercredi 31 décembre 2008 à 13:29, par Julien Tartarin
Une solution pour éviter ce genre de soucis en parsant des dates absolues peut être de passer 0 comme timestamp de référence : strtotime('2008-02', 0) retournera le bon jour (puisqu'il se basera sur le 1er janvier 1970 on aura bien le jour 1 du mois)
#4 Le mercredi 31 décembre 2008 à 17:36, par Rano
Tu peux aussi faire strtotime('2008-02-01'), c pas plus mal :)
#5 Le vendredi 2 janvier 2009 à 10:16, par Julien Tartarin
En supposant que la date soit toujours à ce format, oui, mais ce n'est pas forcément le cas (d'où l'intérêt de strtotime)
#6 Le mercredi 7 janvier 2009 à 17:57, par webmaster Code Promo
J'avais jamais rencontré ce bug (ou "fonctionnalité" comme ils disent chez Microsoft), et je viens de comprendre pourquoi: je converti toujours en utilisant mktime(0,0,0,2,1,2008), du coup, je n'ai jamais eu ce probleme!
#7 Le mercredi 18 février 2009 à 20:49, par jp
C'est marrant, je viens de corriger le problème chez un client ce matin même !