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 du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 70
    Points : 52
    Points
    52
    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 éclairé
    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
    Points : 773
    Points
    773
    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 chevronné

    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
    Points : 1 752
    Points
    1 752
    Par défaut
    +1

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 70
    Points : 52
    Points
    52
    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 du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 70
    Points : 52
    Points
    52
    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