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 :

[Débutant] Construction de date pour comparaison


Sujet :

Python

  1. #1
    Expert confirmé
    Avatar de Katyucha
    Femme Profil pro
    DevUxSecScrumOps Full Stack Bullshit
    Inscrit en
    Mars 2004
    Messages
    3 287
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Irlande

    Informations professionnelles :
    Activité : DevUxSecScrumOps Full Stack Bullshit

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 287
    Points : 5 075
    Points
    5 075
    Par défaut [Débutant] Construction de date pour comparaison
    Bonjour,

    J'ai fait quelques recherches mais en vain, donc je me tourne vers vous.

    J'ai deux dates, l'une est crée par moi même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    bootref = datetime.datetime.strptime('010314', '%d%m%y').date()
    L'autre "sysboot" me vient d'une requête XML RPC qui doit me rendre un dateTime.iso8601 d'après la documentation.

    Quand je fais un type sur les deux objets, j'ai :
    bootref : <type 'datetime.date'>
    sysboot : <type 'instance'>

    Quand j'affiche les deux variables :
    bootref : 2014-03-01
    sysboot : 20140325T23:18:13

    Vous voyez la question venir ? Comment je fais pour comparer ces deux dates?!!

    Merci de votre aide
    Grave urgent !!!

  2. #2
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    Par défaut
    Salut,

    Je pense qu'il vous faut transformer sysboot en une date au meme format que bootref, puis faire la comparaison. Par exemple:

    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
    from datetime import datetime
     
    # Assuming dates are strings
    bootref = '2014-03-01'
    sysboot = '20140325T23:18:13'
     
    # Get everything before 'T' (assuming the format will remain indentical)
    bootsys = sysboot.split('T')[0]
     
    # Define format of the bootref and bootsys dates
    fmt_bootref = '%Y-%m-%d'
    fmt_bootsys = '%Y%m%d'
     
    # Create a dateref and datesys with datetime module
    dateref = datetime.strptime(bootref, fmt_bootref)
    datesys = datetime.strptime(bootsys, fmt_bootsys)
     
    print dateref, datesys
    print dateref == datesys
    L'astuce ici c'est de definer un format different pour les deux dates


    Ju

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,
    Citation Envoyé par Katyucha Voir le message
    Vous voyez la question venir ? Comment je fais pour comparer ces deux dates?!!
    Vous ne pouvez comparer que des carottesdatetime avec des carottesdatetime.
    La question devrait être comment transformer le str "20140325T23:18:13" en datetime.
    Et comme c'est un format "standard", la réponse serait a chercher dans:
    • la documentation de la librairie XML qui devrait (à partir du schema) effectuer la transformation,
    • celle du module datetime qui doit avoir ce qu'il faut,
    • au pire datetime.strftime(bootime, “%Y-%m-%dT%H:%M:%S”)

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Expert confirmé
    Avatar de Katyucha
    Femme Profil pro
    DevUxSecScrumOps Full Stack Bullshit
    Inscrit en
    Mars 2004
    Messages
    3 287
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Irlande

    Informations professionnelles :
    Activité : DevUxSecScrumOps Full Stack Bullshit

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 287
    Points : 5 075
    Points
    5 075
    Par défaut
    Citation Envoyé par Julien N Voir le message
    Salut,

    Je pense qu'il vous faut transformer sysboot en une date au meme format que bootref, puis faire la comparaison. Par exemple:

    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
    from datetime import datetime
     
    # Assuming dates are strings
    bootref = '2014-03-01'
    sysboot = '20140325T23:18:13'
     
    # Get everything before 'T' (assuming the format will remain indentical)
    bootsys = sysboot.split('T')[0]
     
    # Define format of the bootref and bootsys dates
    fmt_bootref = '%Y-%m-%d'
    fmt_bootsys = '%Y%m%d'
     
    # Create a dateref and datesys with datetime module
    dateref = datetime.strptime(bootref, fmt_bootref)
    datesys = datetime.strptime(bootsys, fmt_bootsys)
     
    print dateref, datesys
    print dateref == datesys
    L'astuce ici c'est de definer un format different pour les deux dates


    Ju
    Oui mais non, car je dois garder la partie Heure/Min/Secondes...
    De plus split n'est pas connu pour un type instance
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AttributeError: DateTime instance has no attribute 'split'



    Citation Envoyé par wiztricks Voir le message
    Salut,


    Vous ne pouvez comparer que des carottesdatetime avec des carottesdatetime.
    Je suis bien au courant, c'est pour cela que j'ai affiché les types des deux variables

    La question devrait être comment transformer le str "20140325T23:18:13" en datetime.
    Et comme c'est un format "standard", la réponse serait a chercher dans:
    • la documentation de la librairie XML qui devrait (à partir du schema) effectuer la transformation,
    • celle du module datetime qui doit avoir ce qu'il faut,
    • au pire datetime.strftime(bootime, “%Y-%m-%dT%H:%M:%S”)
    Justement, j'ai pas mal cherché et je n'y arrive pas, pour cela que j'ai quéri de l'aide
    Le "au pire", j'ai déjà tenté mais j'ai cette erreur
    TypeError: descriptor 'strftime' requires a 'datetime.time' object but received a 'instance'

    Je suis toujours confronté à cette 'instance'

    - W
    - K
    Grave urgent !!!

  5. #5
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    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 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Et la solution de Julien N ne convient pas?
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  6. #6
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    Par défaut
    Eh bien d'après Katyucha , non.

    Oui mais non, car je dois garder la partie Heure/Min/Secondes...
    Ah mon humble avis si bootref : 2014-03-01 alors l'heure, les minutes et les secondes sont par défaut égales à 00:00:00. Conserver ces infos pour sysboot est tout à fait possible mais inutile.

    A ce moment là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sysboot = '20140325T23:18:13'
    bootsys = sysboot # Inutile, mais correspond a ce qui a ete fait dans l'exemple precedent
    fmt_bootsys = '%Y%m%dT%H:%M:%S'
    print datesys
    De plus split n'est pas connu pour un type instance
    Bien sûr mon exemple, pour fonctionner, faisait appel à une chaine de caractères. L'instance en question nous est inconnue. sysboot est l'instance de quell objet? Ne pouvez-vous pas le transformer en string?

    Ju

  7. #7
    Expert confirmé
    Avatar de Katyucha
    Femme Profil pro
    DevUxSecScrumOps Full Stack Bullshit
    Inscrit en
    Mars 2004
    Messages
    3 287
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Irlande

    Informations professionnelles :
    Activité : DevUxSecScrumOps Full Stack Bullshit

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 287
    Points : 5 075
    Points
    5 075
    Par défaut
    l' Instance est un retour d'un appel à un XML-RPC. De plus dans la documentation, mon type doit être de type dateTime.iso8601 (comme indiqué dans mon premier message)

    Je ne connais pas trop le python (un de mes premiers programmes) mais sous Java, j'avais toujours un truc type toString() pour m'en sortir...
    Grave urgent !!!

  8. #8
    Expert confirmé
    Avatar de Katyucha
    Femme Profil pro
    DevUxSecScrumOps Full Stack Bullshit
    Inscrit en
    Mars 2004
    Messages
    3 287
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Irlande

    Informations professionnelles :
    Activité : DevUxSecScrumOps Full Stack Bullshit

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 287
    Points : 5 075
    Points
    5 075
    Par défaut
    J'ai trouvé une fonction str(object) return string. Ca l'air de fonctionné

    bidule = str(SaloperieDinstance)
    print type(bidule) => Me donne un string

    Je vais pouvoir continuer ! (et je reviens cloturer quand c'est bon les modos :p)

    Merci les gars !
    Kat
    Grave urgent !!!

  9. #9
    Expert confirmé
    Avatar de Katyucha
    Femme Profil pro
    DevUxSecScrumOps Full Stack Bullshit
    Inscrit en
    Mars 2004
    Messages
    3 287
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Irlande

    Informations professionnelles :
    Activité : DevUxSecScrumOps Full Stack Bullshit

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 287
    Points : 5 075
    Points
    5 075
    Par défaut
    Farpait !!

    J'ai revu la création de bootref en utilisant datetime.datetime (j'ai bien une date avec heure/min/sec)
    A cela
    un petit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     yourdate = dateutil.parser.parse(str(sysboot))
    Me transforme l'instance sysboot en string, puis parssage et j'obtiens un datetime.datetime farpait !

    Merci à tous
    Grave urgent !!!

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

Discussions similaires

  1. [MySQL-5.0] requete sur plusieurs date pour comparaison
    Par guigui69 dans le forum Requêtes
    Réponses: 5
    Dernier message: 06/01/2014, 10h10
  2. Comparaison de dates pour effectuer un traitement ?
    Par abdeljaouad dans le forum C++
    Réponses: 1
    Dernier message: 26/06/2009, 17h25
  3. [XL-2003] format de date pour comparaison
    Par ropineau dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/06/2009, 14h41
  4. [Débutant]Pb date pour une sauvegarde
    Par Tymk dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 03/07/2008, 08h37
  5. [débutant] récuperer date pour insert
    Par isarian dans le forum ASP.NET
    Réponses: 3
    Dernier message: 20/05/2008, 16h40

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