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 :

comment connaître le numéro d'une semaine en fonction d'une date et vis-versa ?


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 471
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 471
    Par défaut comment connaître le numéro d'une semaine en fonction d'une date et vis-versa ?
    bonjour,

    j'aimerai connaître comment faire pour trouver le numéro d'une semaine en fonction d'une date ?

    et aussi les 7 jours d'une semaine dont je connais le numéro !

    Pas moyen de trouver cela dans la class datetime !

    Est-ce un traitement typiquement français de compter d'attribuer un numéro de semaine dans le calendrier ?

    une aide ?

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Par défaut
    C'est bel et bien dans la classe datetime :
    datetime.datetime.isocalendar
    Les explications sont données ici : datetime.date.isocalendar
    Le numéro de la semaine est le deuxième élément du triplet.

  3. #3
    Membre éprouvé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 471
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 471
    Par défaut ok
    ah oui ! merci !
    j'avais à moitié raison, comme c'est dans la partie ISO, c'est que Européen ce genre de traitement !


    par contre la fonction ne fait pas l'inverse, me dire quels sont les 7 jours de la semaine 41 !

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Par défaut
    Un peu de calcul te permettra de les trouver !
    Tu pars du lundi de la semaine 1 (facile à trouver), et tu ajoutes un timedelta correspondant au nombre de jours voulu.

  5. #5
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 77
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Par défaut
    Pour lister la semaine 10
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    from datetime import date,timedelta
    d=date(2009, 1, 1)
    unjour=timedelta(days=1)
    iso=d.isocalendar()
    while iso[1]!=10:
       d+=unjour
       iso=d.isocalendar()
    while iso[1]==10:
       print d
       d+=unjour
       iso=d.isocalendar()
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Par défaut
    Sinon, pour faire ça en appliquant une formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    from datetime import date, timedelta
     
    def semaine(annee, sem):
        ref = date(annee, 1, 4) # Le 4 janvier est toujours en semaine 1
        j = ref.weekday()
        jours = 7*(sem - 1) - j
        lundi = ref + timedelta(days=jours)
        return [lundi + timedelta(days=n) for n in xrange(7)]

  7. #7
    Membre éprouvé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 471
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 471
    Par défaut
    Citation Envoyé par Zavonen Voir le message
    Pour lister la semaine 10
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    from datetime import date,timedelta
    d=date(2009, 1, 1)
    unjour=timedelta(days=1)
    iso=d.isocalendar()
    while iso[1]!=10:
       d+=unjour
       iso=d.isocalendar()
    while iso[1]==10:
       print d
       d+=unjour
       iso=d.isocalendar()
    merci à tous pour votre aide et surtout oiffrig !

    par contre , la solution de Zavonen fonctionne aussi mais elle occupera grave le serveur si je cherche les jours des semaines de fin d'année !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/10/2013, 22h47
  2. Réponses: 3
    Dernier message: 22/02/2012, 14h37
  3. Réponses: 1
    Dernier message: 06/11/2009, 13h52
  4. Réponses: 1
    Dernier message: 18/04/2008, 14h40
  5. Comment récupérer le numéro de la semaine ?
    Par claude dans le forum Langage
    Réponses: 7
    Dernier message: 25/06/2004, 15h06

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