Page 1 sur 1

Si derniers jours du mois

Posté : 24 sept. 2013, 12:14
par gdc
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 ...

Re: Si derniers jours du mois

Posté : 24 sept. 2013, 13:04
par xTG
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. :)

Re: Si derniers jours du mois

Posté : 24 sept. 2013, 13:12
par yann18
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



Re: Si derniers jours du mois

Posté : 24 sept. 2013, 16:54
par orenx22
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 ++

Re: Si derniers jours du mois

Posté : 24 sept. 2013, 18:43
par Mazarini
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:

Re: Si derniers jours du mois

Posté : 24 sept. 2013, 19:13
par AB
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é.

Re: Si derniers jours du mois

Posté : 24 sept. 2013, 20:28
par Mazarini
Je note le $date->format('t') =D>

Re: Si derniers jours du mois

Posté : 25 sept. 2013, 01:48
par gdc
Je vous remerci tous,


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

Un gros merci