Date du mois denier

Résolu
Signaler
Messages postés
31
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
30 juin 2008
-
Messages postés
2480
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
-
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

Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
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));
?>
Messages postés
2480
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
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...
Messages postés
31
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
30 juin 2008

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
Messages postés
962
Date d'inscription
samedi 19 janvier 2002
Statut
Membre
Dernière intervention
2 août 2010
1
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  
Messages postés
962
Date d'inscription
samedi 19 janvier 2002
Statut
Membre
Dernière intervention
2 août 2010
1
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  
Messages postés
31
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
30 juin 2008

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
Messages postés
2480
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
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...
Messages postés
31
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
30 juin 2008

Essaye si tu as un serveur PHP dispo. Pour ce jour ci le 31/03/2008 ca ne marche pas

zazadec
Messages postés
31
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
30 juin 2008

[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
Messages postés
31
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
30 juin 2008

[auteur/NEIGEDHIVER/924195.aspx neigedhiver] excuse encore une fois.
Mon but est de trouver Février.


zazadec
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Oui enfin la solution de Neige est meilleure, hein : plus optimisée.
Messages postés
2480
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
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...
Messages postés
31
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
30 juin 2008

Si je vous fait un chèque, vous pouvez vous le partager ?

zazadec
Messages postés
2480
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
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...