Date du mois denier

Résolu
zazadec Messages postés 31 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 30 juin 2008 - 31 mars 2008 à 22:49
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 - 1 avril 2008 à 03:49
Bijour tous,

Tout d'abord régler votre date système sur aujourd'hui 'Lundi 31 mars 2008'
MAintenant je vous met au défit de trouver la date du mois dernier. Je comprend rien. Je ne sais pas si à cause des années bixestiles, ou une combinaison de malchances mais j'ai du mal à trouver le numéro du mois dernier.

A savoir que j'ai testé pas mal de truc que j'ai trouvé sur le net, notamment :
$elts = explode("/", $date);

$jour = $elts[0];
$mois = $elts[1];
$an   = $elts[2];

$mois_dernier = mktime(0, 0, 0, $mois-1, $jour, $an);
echo "Mois dernier : ".date("d/m/Y", $mois_dernier);

Et plein d'autres trucs, mais ça marche pas (enfin chez mois avec mes variables)

Donc soit je viens de trouver un bug php (ce que je doute car vraiment vu mon niveau ...) soit j'ai une variable php mal positionnée.
Si chez vous ca marche, aiguillé moi car ca fait 4 heures que je cherche et .

Merci à tous

zazadec

14 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
1 avril 2008 à 00:46
Hello,

il y a effectivement un bug. Une solution est de systématiquement prendre le début du mois comme date référence.
Un exemple moche, à revoir (mais il faut chercher, ce buig est sans doute référencé et peut-être y a t il un work-around) pourrait être :
<?php
$sDate = '2008-03-30';
$iTimeStamp = strtotime(substr($sDate, 0, 8).'01');
echo strftime('%B', strtotime('last month', $iTimeStamp));
?>
3
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
1 avril 2008 à 00:52
Je ne comprends décidément pas ce que tu veux...

Si ta date au format SQL ne te convient pas, convertis-la... Il existe des centaines de codes pour ce faire (de plus ou moins bonne qualité, après, faut voir).
Tu veux février ? Mais février c'est pas une date, c'est un mois. Tu veux une date, ou un mois ? Le mois précédent ?

Bon alors admettons que tu souhaites connaitre le numéro du mois précédent et que ta date soit au format YYYY-MM-DD :

$mois_dernier = (intval(substr($date_sql, 5, 2)) + 11) % 12;

Si c'est bien ça, je cherche encore la difficulté...

<hr size="2" width="100%" />Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
3
zazadec Messages postés 31 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 30 juin 2008
1 avril 2008 à 01:05
Merci bcp Malalam.



Si je comprend bien et pour résumé, le contournement du bug est de considérer que quel que soit le jour du mois en cours, on doit fixer comme jour de base pour le calcul du mois dernier le 1er jour du mois.

J'ai vérifié. Ca marche pour tout les jours de l'année, même si année bissextile et pour le mois de février.

zazadec
3
yoman64 Messages postés 962 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 2 août 2010 1
31 mars 2008 à 23:14
Salut,

euh ... Bon moi je me casserais pas les couilles avec $mois -1 surtout que justement à cause du nombre de jour chaque mois ou bien des années bisextile ou si le mois arrive à 0 (Je crois que date gère ces cas la , mais mieu vaut pas prendre de chance).

Alors moi j'utiliserais une fonction faite pour ça, et j'ai nommé strtotime.

Documentation: http://ca.php.net/manual/en/function.strtotime.php

Je ne sais pas comment ta date est formaté dès le début, mais supposons que ce soit un timestamp tu n'as qu'a faire

echo date('d/m/Y',strtotime('-1 month',$timestamp));

-------------------
Vous cherchez un hebergement Php/MySQL Gratuit et sans publicités ??
Et bien c'est la : www.e3b.org  
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yoman64 Messages postés 962 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 2 août 2010 1
31 mars 2008 à 23:18
Salut,

Ah oui j'avais pas vu que tu utilisait mktime (j'suis épuisé, ça réfléchie moin bien dans ces cas la :)) alors oui il accepte des valeurs négatives et ton code devrait fonctionner si ta date était de format d/m/Y en partant..

-------------------
Vous cherchez un hebergement Php/MySQL Gratuit et sans publicités ??
Et bien c'est la : www.e3b.org  
0
zazadec Messages postés 31 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 30 juin 2008
31 mars 2008 à 23:22
Ma date est au format SQL soit YYY-MM-DD.
Mais ca ne marche pas !!!
Je c'est pas pourquoi. Trouvé la date d'hier OK de l'année prochaine OK mais du mois dernier

zazadec
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
31 mars 2008 à 23:23
Salut,

Moi, j'aimerais bien savoir ce que c'est la date du mois dernier... Le mois dernier, y'avait exactement 29 dates différentes. Est-ce qu'il y en a une qu'il faut retenir plus que les autres ?

Sinon, effectivement, strtotime() est une fonction tout à fait adaptée. Suffit de lui passer en argument '-1 month', et elle se débrouille toute seule comme une grande (si tant est que la date que l'on cherche est celle d'il y a un mois jours pour jours...)

<hr size="2" width="100%" />Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
0
zazadec Messages postés 31 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 30 juin 2008
31 mars 2008 à 23:26
Essaye si tu as un serveur PHP dispo. Pour ce jour ci le 31/03/2008 ca ne marche pas

zazadec
0
zazadec Messages postés 31 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 30 juin 2008
31 mars 2008 à 23:28
[auteur/NEIGEDHIVER/924195.aspx neigedhiver] excuse pas vu ton message.
Peux tu me confirmer que chez toi ca marche. Car entre la théorie avec laquelle je suis tout a fait d'accord, et la pratique ca ne marche pas.


zazadec
0
zazadec Messages postés 31 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 30 juin 2008
31 mars 2008 à 23:29
[auteur/NEIGEDHIVER/924195.aspx neigedhiver] excuse encore une fois.
Mon but est de trouver Février.


zazadec
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
1 avril 2008 à 01:07
Oui enfin la solution de Neige est meilleure, hein : plus optimisée.
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
1 avril 2008 à 01:16
Merci chef (tu m'diras pour le chèque, combien de zéros tu veux...)

<hr size="2" width="100%" />Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
0
zazadec Messages postés 31 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 30 juin 2008
1 avril 2008 à 01:31
Si je vous fait un chèque, vous pouvez vous le partager ?

zazadec
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
1 avril 2008 à 03:49
Malalam, tu veux la moitié droite, ou la moitié gauche ?

<hr size="2" width="100%" />Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
0