IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Calcul de dates particuliers


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 22
    Points : 11
    Points
    11
    Par défaut Calcul de dates particuliers
    Bonjour à tous,

    Je souhaiterai solliciter votre aide sur un calcul de dates particulier.

    Mon but serait de calculer une date en fonction de la date en cours en omettant certains jours.

    Je m'explique par un exemple :

    Nous sommes le jeudi 24/01/2013. Je souhaiterai ajouter 5 jours à cette date en ne prenant pas en compte les samedis, dimanches et lundis par exemple. On obtiendrait donc la date suivante : vendredi 01/02/2013 (25/01,29/01,30/01,31/01,01/02).

    J'ai pour habitude d'utiliser la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    date('d/m/Y', strtotime('+5days));
    Mais je ne sais pas comment lui indiquer les jours à ne pas prendre en compte.

    Pouvez-vous m'aider s'il vous plait ?

    Par avance merci.

    Benjamin.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ce n'est pas modulable mais ça fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $jour = date('N');
    $ecart = ($jour > 4) ? 11 - $jour : 8;
    echo date('d/m/Y', strtotime('+' .  $ecart . 'days'));
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    Merci pour ta réponse.

    Pourrez-tu m'expliquer d'ou proviennent tes constantes (4,11 et 8) s'il te plait ?

    La ça semble fonctionner pour des jours qui se suivent mais si je décide de ne pas prendre en compte le samedi, le dimanche et le mardi, il me semble que cette dernière ne fonctionne plus.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Non c'est ce que je t'ai dis ce n'est pas modulable

    jour départ : lundi
    lundi mardi mercredi jeudi vendredi samedi dimanche lundi
    = 5 jours + 3 jours ignorés = 8 jours

    jour départ : vendredi
    vendredi samedi dimanche lundi mardi mercredi jeudi vendredi samedi dimanche lundi mardi
    = 5 jours + 6 jours ignorés = 11 jours

    Il est peut être possible d'écrire un algorithme totalement modulable.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    Ah d'accord j'ai compris ton raisonnement !

    Oui il me faudrait une fonction généraliste qui puisse gérer n'importe quels jours omis.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Moins performant mais pour seulement 5 jours ce n'est pas un drame :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $jours_exclus = array(1, 6, 7);
    $n = 0;
     
    $jour = new DateTime();
    while ($n < 5)  {
    	$jour->modify('+1 day');
            if (!in_array($jour->format('N'), $jours_exclus)) {
                 $n++;
            }
    }
    echo $jour->format('d/m/Y');
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. [Calendar]Problème de calcul de date
    Par valerie90 dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 08/12/2004, 12h13
  2. COUNT + Calcul de DATE
    Par cassi2 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 28/10/2004, 16h35
  3. Resutlat de calcul sur date formaté
    Par neness dans le forum SQL
    Réponses: 6
    Dernier message: 16/06/2004, 15h34
  4. SCRIPT CALCULANT LA DATE
    Par Redouane dans le forum ASP
    Réponses: 3
    Dernier message: 17/03/2004, 09h10
  5. Calcul sur date
    Par Thomad dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/09/2003, 08h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo