[RESOLU] Si derniers jours du mois

gdc
Eléphant du PHP | 101 Messages

24 sept. 2013, 12:14

Bonjour,

J'aimerai savoir est-ce possible de pouvoir executer une partie de script quand c'est le dernier jours du mois a 00:00 ...

J'expliquer:

si derniers jours { execute fermeture de mois } else { execute seulement la commande 24h }

Merci

Je n'ai rien trouver a moin que je n'ais pas bien chercher ...

ViPHP
xTG
ViPHP | 7331 Messages

24 sept. 2013, 13:04

J'utiliserai la fonction strtotime pour calculer le jour suivant.
Puis en extraire le mois et comparer par rapport au mois courant.
S'il est différent c'est que demain sera le premier jour du mois et donc qu'on se trouve à la fin du mois courant. :)

Mammouth du PHP | 571 Messages

24 sept. 2013, 13:12

bonjour,

dans la fonction date(format,time) on peut obtenir le nombre de jour d'un mois donné.il suffit de passer à format le caractère t:

$date = "2013-09-24";
echo "<br>dernier jour :", date("Y-m-t", strtotime($date));//affichera : 2013-09-30



Eléphant du PHP | 79 Messages

24 sept. 2013, 16:54

Bonjour l'ami,

xTg a la bonne logique, c'est à dire de voir quel est le jour suivant. Dans l'idée si le jour suivant et plus petit qu'aujourd'hui, c'est que l'on se trouve en fin de mois.
$today = date( "d", time() );

$date = new DateTime( date( "Y-m-d", time() ), new DateTimeZone( 'Europe/Paris' ) );
$date-> add( new DateInterval( 'P1D' ) );

// si la date d'aujourd'hui est plus grand que demain
if( $today > $date-> format( 'd' ) )
{
    // traitement mensuel
}
else
{
    // traitement journalier
}
J'ai pas testé le code mais je ferai de cette manière en tout cas.

Ciao ++

ViPHP
ViPHP | 2577 Messages

24 sept. 2013, 18:43

Sauf erreur de ma part, le 00/12/2013 => 30/11/2013 et le 00/13/2013 => 31/12/2013
Pas très propre, mais efficace. :oops:

ViPHP
AB
ViPHP | 5818 Messages

24 sept. 2013, 19:13

Oui y'a mille et une manière de faire. De nos jours j'éviterais si possible d'utiliser strtotime. Cela ne pose généralement pas de problème mais depuis qu'il existe des fonctions équivalentes qui lèvent la limitation du calendrier, autant les utiliser.

Sinon sur le principe, la proposition de yann18 me semble la plus simple (et propre ;)) en utilisant le caractère t pour trouver le nombre de jours du mois. On peut donc faire aussi :
$date = new DateTime();
if($date->format('d') == $date->format('t')) echo 'on est sur le dernier jour du mois';
Sinon parmi les "vieilles" fonctions il existe aussi "cal_days_in_month" pour trouver le nombre de jours dans un mois donné.

ViPHP
ViPHP | 2577 Messages

24 sept. 2013, 20:28

Je note le $date->format('t') =D>

gdc
Eléphant du PHP | 101 Messages

25 sept. 2013, 01:48

Je vous remerci tous,


Donc je vais essayer ca demain, je vous retien au courant si j'ai des problèmes ...

Un gros merci