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 :

Calcul avec dates


Sujet :

Python

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 70
    Par défaut Calcul avec dates
    Bonjour bonjour,

    Voila pour mon prog j'ai besoin d'interpoler des valeurs...
    Ce qui veut dire calcul de pente et tout le blabla.
    Je récupère donc
    - la valeur inf V_inf a la date T_inf
    - la valeur sup V_sup a la date T_sup
    et je veux calculer la valeur V à la date T (que je connais)

    Les dates sont stockées dans une liste:
    self.Axe = [datetime.datetime(2009,01,01,00,00,12), datetime.datetime(2009,02,01,01,05,28), datetime.datetime(2009,05,12,11,45,09)...]
    La liste est ordonnée chronologiquement.

    Le calcul que j'ai a effectuer est :
    V = (T_sup - T_inf)/(T-T_inf)*(V_sup-V_inf) + V_inf

    Comment je peux faire pour effectuer le calcul entre les dates ??

    J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    valeur = float((self.Axe[posDate+1]-self.Axe[posDate-1]).seconds)/float((splitedDate-self.Axe[posDate-1]).seconds)
            *(V_sup-V_inf)+V_inf
    Qui me renvoie un message d'erreur (Bien sur...):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    valeur = float((self.Axe[posDate+1]-self.Axe[posDate-1]).seconds)/float((splitedDate-self.Axe[posDate-1]).seconds)
            *(valeur_sup-valeur_inf)+valeur_inf
    TypeError: unsupported operand type(s) for -: 'str' and 'str'
    Donc apparement, self.Axe est une liste de datetime.datetime
    Mais self.Axe[i] est au format str....
    Comment faire pour faire mes calculs donc...?

    MOUARF

    Si vous avez une idée je suis totalement preneur !

    TeqPAF

  2. #2
    Membre émérite
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Par défaut
    Convertis tes dates en secondes (ou minutes ou heures etc...), avant d'effectuer des opérations entre elles, non ?

  3. #3
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    +1

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 70
    Par défaut
    Je ne pense pas que ce soit ça le problème...
    Regarde :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> import datetime
    >>> dateinf = datetime.datetime(2009,01,01,00,00,00,215000)
    >>> datesup = datetime.datetime(2009,01,01,00,02,00,215000)
    >>> datesupsup = datetime.datetime(2009,01,01,00,11,00,215000)
    >>> delta = datesup-dateinf
    >>> delta.seconds
    120
    >>> float((datesup-dateinf).seconds)/float((datesupsup-datesup).seconds)
    0.22222222222222221
    La ça marche pourtant...
    Mais ici :
    datesup = datetime.datetime(2009,01,01,00,00,00,215000)
    Or moi apparement, j'ai une date convertie en string du type :
    2009-01-01 00:00:00:215000
    Et la ca plante...

    Je voulais éviter de me farcir un :
    date = mois*31*24*3600+jour*3600*24+heure*3600+minute*60+seconde

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 70
    Par défaut
    Je suis couillon...............
    L'erreur ne renvoi pas à l'opérande entre les dates mais au '-' entre V_inf et V_sup.......
    Comme je vais chercher les valeurs dans un ficheir eh bien elles sont en format 'str'.....

    Désolé du dérangement !
    Merci en tout cas

    TeqPAF

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

Discussions similaires

  1. Calcul avec date - formule à modifier
    Par Weiyin dans le forum Excel
    Réponses: 1
    Dernier message: 21/06/2009, 16h22
  2. Calculs avec date
    Par jncoffy dans le forum Excel
    Réponses: 7
    Dernier message: 05/03/2008, 16h37
  3. [Dates] Calcules avec heures
    Par Pahcixam dans le forum Langage
    Réponses: 17
    Dernier message: 21/08/2006, 21h50
  4. composant de calcul [champ date] avec rave report
    Par segnac dans le forum Bases de données
    Réponses: 2
    Dernier message: 20/06/2005, 19h08
  5. Vue avec calcule de date
    Par jf-nigou dans le forum Langage SQL
    Réponses: 4
    Dernier message: 01/06/2005, 14h48

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