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

Python Discussion :

ajout de jours - calculer date fin sans les samedi dimanche et fériés et congés - Module DateTime


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Avril 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 25
    Par défaut ajout de jours - calculer date fin sans les samedi dimanche et fériés et congés - Module DateTime
    Bonjour

    Existe t il des possibilités simple pour ajouter (réduire) des durées sans compter des les samedi ou dimanche ?
    sinon je regarderai si on tombe un samedi ou un dimanche et j'ajoute 2 jours
    en gros
    + 3 jour le lundi = le mercredi
    +3 jours le jeudi = le lundi

    Est-il possible d'ajouter un calendrier de jour férié et le prendre en compte pour ajouter des jours ?
    Sinon je fait des vérif sur des dates et j'ajouterai les jours nécessaires
    Dans ce cas quelle méthode me conseillez vous pour stocker et atteindre ces dates réservées facilement ?

    Merci d'avance

    Fagar

  2. #2
    Membre éprouvé
    Inscrit en
    Juillet 2013
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 80
    Par défaut
    Bonjour,

    J'ai eu à le faire une fois, et la seule méthode que j'ai trouvé à l'époque c'était :
    1) Compter le nombre N de semaines entières (7j) entre début et fin
    2) Enlever 2*N jours au résultat final
    3) Si jour fin < jour début : enlever 2j (on peut aussi le faire en étape 0)

    EDIT : j'ai mal lu votre demande initiale, vous souhaitez ajouter une durée, et non mesurer la durée. Mon commentaire ne sert à rien, et je ne peux pas le supprimer... désolé

    Du coup, je propose :
    1) Soit N le nombre de jour à ajouter/enlever. Calculer n=N//5, le nombre de semaines complètes à rajouter et m=N%5 le nombre de jours restants. Ajouter/enlever n*7 days
    2) Si on veut additionner et (jour début).weekday()+m > 4 : m += 2 et utiliser timedelta avec m days
    2bis) Si on veut soustraire et (jour début).weekday()-m < 0 : m -= 2 et utiliser timedelta avec m days
    3) Sinon, ajouter/enlever m days avec timedelta

  3. #3
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Pour ce qui concerne les samedi et dimanche, le module Python "calendar" fait ça très bien.

    Pour ce qui concerne les jours fériés en général, ceux qui dépendent de la date de Pâques nécessitent de pouvoir calculer celle-ci. J'avais fait un programme il y a longtemps pour ça (Python 2) (https://python.jpvweb.com/python/mes...date_de_paques), mais il vaut peut-être mieux voir avec pypi: https://pypi.org/project/python-dateutil/. On peut peut-être aussi trouver les dates de Pâques déjà calculées sur 10 ans ou plus...

    Pour le calcul, le plus simple est d'ajouter à la date (datetime) les jours (timedelta) un par un et de tester si on les prends en compte ou pas. Pour faire ça, on peut préparer d'avance une liste de tous les jours qu'on veut neutraliser sur une période donnée (ex: 1 an), ce qui facilitera les tests.

  4. #4
    Membre averti
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Avril 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 25
    Par défaut
    merci à vous deux
    je récupère les principes et les codes comme référence
    Cordialement
    Fagar

  5. #5
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2021
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2021
    Messages : 1
    Par défaut
    Bonjour,

    Je ne sais si ça peut aider mais j'ai réussi à ajouter un nombre de jours à une date sans compter les week-ends. Pour cela, j'utilise datetime

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    count = 0
    deadline = datetime.now()
    while count != NombreDeJourAAjouter:
      deadline += timedelta(days=1)
      if (deadline + timedelta(days=1)).weekday() < 5:
        count += 1
    deadline_date = deadline

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL] une date mais sans les jours
    Par cyberps2 dans le forum Requêtes
    Réponses: 7
    Dernier message: 05/06/2008, 15h53
  2. [HQL] Ajouter des jours à une date
    Par loulou dans le forum Hibernate
    Réponses: 2
    Dernier message: 30/01/2007, 11h22
  3. Ajouter un jour à une date
    Par loudo dans le forum Oracle
    Réponses: 13
    Dernier message: 10/07/2006, 12h06
  4. [MySQL] ajout de jour à une date
    Par mohican13 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 06/03/2006, 17h39

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