Prob avec date et mktime et le mois de février !

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Prob avec date et mktime et le mois de février !

par julian » 31 mars 2009, 09:14

Le mktime prend les paramètres séparemment donc si un paramètre n'est pas bon, il ne calcul pas le timestamp. A mon avis, le plus simple est de prendre le timestamp d'aujourd'hui, et de soustraire 30 jours.
$today = time();
$one_month_ago = $today - 86400 * 30;

par jeremm » 31 mars 2009, 08:53

yep, c'est ce que je proposais de faire mais j'avais peur que ca ne soit pas très propre de forcer une date..
bref merci ;)

par @rthur » 31 mars 2009, 01:29

Bonjour,

Je ne vois absolument pas de bug, tu demande à mktime de te créer une date correcte en lui passant en paramètre le "30 février 2009", le plus logique est effectivement qu'il te retourne le 2 mars 2009.

Si tu cherches à obtenir le mois précédent, alors fixe le jour dans ton mktime au 1er du mois et ainsi plus de problème :
echo date("M Y", mktime(0, 0, 0, date("m")-2, 1,   date("Y")));  // retourne : Jan 2009

echo date("M Y", mktime(0, 0, 0, date("m")-1, 1,   date("Y")));   // retourne : Feb 2009

echo date("M Y", mktime(0, 0, 0, date("m"), 1,   date("Y")));   // retourne : Mar 2009

Prob avec date et mktime et le mois de février !

par jeremm » 30 mars 2009, 22:44

Salut,

Est-ce un bug ou je ne sais quoi, voilà la source :
echo date("M Y", mktime(0, 0, 0, date("m")-2, date("d"),   date("Y")));  // retourne : Jan 2009

echo date("M Y", mktime(0, 0, 0, date("m")-1, date("d"),   date("Y")));   // retourne : Mar 2009

echo date("M Y", mktime(0, 0, 0, date("m"), date("d"),   date("Y")));   // retourne : Mar 2009

// config : easyphp 3.0

Il ne veut pas m'afficher le mois de Février.. surement parceque entre le 28 et le 31 mars, si on fait un mois précédent, on arrive entre le 28 et 31 Février, et là PHP refuse d'afficher car ça n'existe pas et affiche le mois suivant..
Idem pour quand on sera le 31 d'un mois, le mois précédent ne s'affichera pas s'il ne comporte que 30 jours..

Est-ce un bug ? Y'a t'il un workaround ? quand on veut afficher le mois précédent quand on est au mois de mars ?
J'ai pensé à forcer le date("d") en 15 par exemple pour etre sur de tomber tous les mois sur le 15 du mois précédent, qui lui existe bien, mais bon c'est pas très propre ?

Merci.