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 :

[Python2.4] Comment savoir si une date est jour férié ou pas ?


Sujet :

Python

  1. #1
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 347
    Points : 136
    Points
    136
    Par défaut [Python2.4] Comment savoir si une date est jour férié ou pas ?
    Bonjour,

    je voudrais savoir s'il existe un moyen en python de savoir si une date est un jour férié ou pas (biensûr pour un context français).

    Merci de votre aide si vous connaissez ou pas.....

  2. #2
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Points : 891
    Points
    891
    Par défaut
    Bonjour
    je ne pense pas, il faut a mon avis générer une base et ecrire un script de comparaison.
    sinon, je ne vois pas commen
    t python pourrait savoir si un jour est férié!

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 52
    Points : 63
    Points
    63
    Par défaut
    Bonjour,

    idealement, il faudrait que tu aies un fichier contenant les dates de jours fériés.
    Du style
    Dates.txt
    01/01;Premier de l'an
    14/07;Fête Nationale
    Et ton fichier python pourrait ressembler à ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #recuperation de la date 
    import time
    date_today=time.strftime('%d/%m',time.localtime())
    #recuperation des dates feriees
    f=open("Dates.txt",'r')
    contenu=f.readlines()
    f.close()
    for ligne in contenu :
        if ligne[0:5]=='date_today' :
            evenement = ligne.split(';')[1].strip()
            print "Nous sommes un jour ferie : "+evenement
            break
    en espérant que ca t'aide

    See++

  4. #4
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 347
    Points : 136
    Points
    136
    Par défaut bonjour
    bonjour,

    le problème est que je ne peux pas le faire avec un fichier mais uniquement en python.

    En PHP, en indiquant à la fonction date le type de calendrier (genre francais grégorien), il y a une fonction qui dit si c'est férié ou pas, si c'est dimanche ou pas..etc.

    n'y-a-t-il pas d'équivalent en Python ?
    Ptete que quelqu'un a déjà fait ce module...mais j'ai rien trouvé depuis 2 mois

  5. #5
    Membre averti
    Avatar de SoBaKa
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 242
    Points : 349
    Points
    349
    Par défaut
    see++, pourquoi utiliser un fichier externe alors qu'un dictionnaire conviendrait bien mieux et serait intégrer au code source... (enfin pour les jours fériés non mobile).

    sinon, USA Mike, désolé j'ai cherché un peu sur google et j'ai rien trouvé d'exploitable (ce que je trouve bizarre quand même :/)

    Mais bon, au lieu de chercher quelque chose d'exploitable pendant 2 mois et rien trouver, pourquoi ne pas te coder toi même une petite fonction?

    Ca peut faire un très bon exercice
    ****** Analyse/Développeur .Net

  6. #6
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 347
    Points : 136
    Points
    136
    Par défaut ok
    Bonjour,

    merci de votre aide même si...
    je ne peux pas le faire avec un fichier car j'ai besoin que la détermination se fasse automatiquement sans qu'un utilisateur ou Geek y mette les mains dedans.
    C'est pour une application comptable (oui ça existe aussi en Pyhon :-) : TinyERP.

    bon, je vais poursuivre ma quête alors...

    bonne continuation

  7. #7
    Membre éclairé
    Avatar de parp1
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    829
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Points : 872
    Points
    872
    Par défaut
    Ba créer un dictionnaire n'a rien d'externe, c'est comme un liste, ou une class c'est propre et intégré a python.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ferie= {"01/01":"Jour de l'an";"01/05":"Fete du travail";"08/05":"8 mai"; etc  ; "25/12":"Noel"}
    Mais cela ne fonctionne que pour les fériés fixes.
    [SIZE="2"]Dis moi qui tu suis, je te dirais qui je Hais!
    Heureux est l'étudiant, qui comme la rivière suit son cours sans sortir de son lit

    Mon premier Tutoriel


    A 80% des cas je résouts mon problème en rédigeant une nouvelle discussion, du coup je ne poste que 20% de mes problèmes...

  8. #8
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 347
    Points : 136
    Points
    136
    Par défaut ok
    bonjour,

    un collègue m'a filé sa fonction en PHP pour déterminer si un jour est férié ou pas .
    C'est extrement complexe et impossible pour moi à développer en Python.
    D'autres explications sont là aussi :
    http://users.chariot.net.au/~gmarts/eastalg.htm

    Si quelqu'un se sent le courage d'un chevalier (je rêve biensur) pour convertir ce PHP en python , voilà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    function getholidays($annee)
    {
    global $holidays;
     
    # We need the easter date for some calculation
    $a = $annee % 19;
    $b = $annee % 4;
    $c = $annee % 7;
    $d = (19 * $a + 24) % 30;
    $e = (2 * $b + 4 * $c + 6 * $d + 5) % 7;
    $OT = 22 + $d + $e;
    $OM = 3;
    if ( $OT > 31 ) {
      $OT = $d + $e - 9;
      $OM = 4;
    }
    if ( ($OT == 26) && ($OM == 4) ) {
      $OT = 19;
    }
    if ( ($OT == 25) && ($OM == 4) && ($d == 28) && ($e == 6) && ($a > 10) ) {
      $OT = 18;
    }
     
    for ($i=0; $i<sizeof($holidays); $i++)
      {
      if ($holidays[$i][Date]=="EASTERSUNDAY")
        {
        $tp = mktime (0,0,0,$OM,$OT,$annee);
        $pday = Date("d-m",$tp);
        list($day,$month)=explode("-",$pday);
        $outholidays[]=array("Date"=>"$annee-$month-$day", "Desc"=>$holidays[$i][Desc]);
        }
      elseif ($holidays[$i][Date]=="EASTERMONDAY")
        {
        $tp = mktime (0,0,0,$OM,$OT,$annee);
        $tp += 86400;
        $pday = Date("d-m",$tp);
        list($day,$month)=explode("-",$pday);
        $outholidays[]=array("Date"=>"$annee-$month-$day", "Desc"=>$holidays[$i][Desc]);
        }
      elseif ($holidays[$i][Date]=="ASCENSIONDAY")
        {
        $tp = mktime (0,0,0,$OM,$OT,$annee);
        $tp += (5 * 7 + 4) * 86400;
        $pday = Date("d-m",$tp);
        list($day,$month)=explode("-",$pday);
        $outholidays[]=array("Date"=>"$annee-$month-$day", "Desc"=>$holidays[$i][Desc]);
        }
      elseif ($holidays[$i][Date]=="WHITSUNDAY")
        {
        $tp = mktime (0,0,0,$OM,$OT,$annee);
        $tp += 7 * 7 * 86400;
        $pday = Date("d-m",$tp);
        list($day,$month)=explode("-",$pday);
        $outholidays[]=array("Date"=>"$annee-$month-$day", "Desc"=>$holidays[$i][Desc]);
        }
      elseif ($holidays[$i][Date]=="WHITMONDAY")
        {
        $tp = mktime (0,0,0,$OM,$OT,$annee);
        $tp += 7 * 7 * 86400;
        $tp += 86400;
        $pday = Date("d-m",$tp);
        list($day,$month)=explode("-",$pday);
        $outholidays[]=array("Date"=>"$annee-$month-$day", "Desc"=>$holidays[$i][Desc]);
        }
      else
        {
        list($day,$month)=explode("-",$holidays[$i][Date]);
        $outholidays[]=array("Date"=>"$annee-$month-$day", "Desc"=>$holidays[$i][Desc]);
        }
      }
    return $outholidays;
    }
     
    function isholiday($date, $holidays)
    {
    for ($i=0; $i<sizeof($holidays); $i++)
      if ($date==$holidays[$i][Date])
        return 1;
    return 0;
    }

  9. #9
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 347
    Points : 136
    Points
    136
    Par défaut ok, c'est bon navette !
    rebonjour,

    une autre solution plus populaire m'a été transmise : exploiter un fichier iCal.
    Les fichiers iCal sont devenus super populaire et utilisable partout (au contraire des csv,xml..etc). ya même un business de vente de calendrier d'évenements sportif généré autour de ça !

    Donc j'ai trouvé un module python qui exploite de type de fichier :
    http://www.nongnu.org/python-pdi/
    http://www.nongnu.org/python-pdi/tutorial.html

    D'autres projets similaires :
    http://vobject.skyhouseconsulting.com/
    http://codespeak.net/icalendar/

    ça semble plus simple ainsi même si je rêve d'une super fonction comme la PHP :-)

  10. #10
    Membre expérimenté Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Points : 1 728
    Points
    1 728
    Par défaut
    Bonjour USA_Mike, tu ecris:
    le problème est que je ne peux pas le faire avec un fichier mais uniquement en python.
    et
    une autre solution plus populaire m'a été transmise : exploiter un fichier iCal.
    Paradoxe ?

    les fichiers iCal sont devenus super populaire et utilisable partout (au contraire des csv,xml..etc)
    Ah bon, xml et csv sont 'moins' utilisables ?? malgré les librairies natives dans beaucoup de langage?
    "Etre conscient de la difficulté permet de l'éviter.."
    Lao-Tseu.

  11. #11
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 347
    Points : 136
    Points
    136
    Par défaut ok
    bonjour,

    je disais donc :
    les fichiers iCal sont devenus super populaire et utilisable partout (au contraire des csv,xml..etc)
    En effet, en trouve sur le net pleisn de site qui proposent par exemple des fichiers iCal à importer dans ton outlook,ipod,firefox,Blog contenant des dates d'évenements tel que :
    - jours fériés
    - journal des sorties des série télé
    - évenement sportifs
    - rappel historique
    ..etc !
    Il y a même des sites qui proposent de les acheter via un code téléphonique d'appel facturé (08...).
    Ce que je voulais dire par populaire c'est chez l'utilisateur et non chez le développeur.
    De plus l'utilisateur n'a pas besoin d'aller bidouiller son fichier ical (contraitement au txt,csv,xml..etc). On installe l'iCal,le met à jour et point barre ça marche !

    Maintenant que j'y pense, le mieux, le top serait encore un lien RSS...lol

Discussions similaires

  1. comment savoir qu'une date est un dimanche ?
    Par Ekimasu dans le forum Général Python
    Réponses: 1
    Dernier message: 13/02/2008, 11h53
  2. Comment savoir si une connexion est deja ouverte?
    Par ghor_bey dans le forum Web & réseau
    Réponses: 3
    Dernier message: 29/07/2005, 16h17
  3. Réponses: 6
    Dernier message: 01/07/2005, 16h06
  4. Comment savoir si une variable est initialisée ?
    Par nabix dans le forum Général Python
    Réponses: 8
    Dernier message: 10/03/2005, 16h12
  5. Comment savoir qu'une fonction est standard ?
    Par D[r]eadLock dans le forum C
    Réponses: 5
    Dernier message: 24/03/2003, 15h42

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