timedelta in stunden umrechnen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
wrongspot
User
Beiträge: 5
Registriert: Freitag 27. Juni 2008, 20:58

timedelta in stunden umrechnen

Beitragvon wrongspot » Freitag 27. Juni 2008, 21:39

Hallo meine erste Post hier,

folgendes Problem. Ich möchte ein datetime.timedelta Object in Stunden umrechnen. Hier ein Beispiel:

(1 day, 0:00:00) soll in Stunden konvertiert werden, es müssten also 24 h sein. Vielleicht gibt es einen effizienten Weg das ganze auch in Minuten oder Sekunden umzurechnen.

Hat jemand eine helfende Idee?

Danke,
wrongspot
BlackJack

Beitragvon BlackJack » Freitag 27. Juni 2008, 22:12

In Stunden: ``delta.days * 24 + delta.seconds / 3600``.
wrongspot
User
Beiträge: 5
Registriert: Freitag 27. Juni 2008, 20:58

Beitragvon wrongspot » Freitag 27. Juni 2008, 23:30

ok das ist schon mal ein Anfang, aber bei einem timedelta von ( 0:45:00 ) kommt laut code genau 0 raus. mhhhh......
wrongspot
User
Beiträge: 5
Registriert: Freitag 27. Juni 2008, 20:58

Beitragvon wrongspot » Samstag 28. Juni 2008, 00:23

Ok. mit ein bisschen probieren habe ich mir eine Funktion geschrieben, die das timedelta in "hh:mm" ausgibt, so sollte es klappen

Code: Alles auswählen

def timedeltaToHours(delta):
   sec = delta.seconds
   daysToHours = delta.days * 24
   hours = sec // (60 * 60)
   minutes = (sec - (hours * 60 * 60)) // 60
   return str(hours + daysToHours) + ":" + str(minutes) + " h"


Danke ans Forum für die Ideengebung!
wrongspot
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Beitragvon numerix » Samstag 28. Juni 2008, 04:53

Soviel Arbeit hättest du dir gar nicht machen müssen.

BlackJack hat in seiner Berechnung lediglich einen Punkt vergessen.
Nein, nicht einmal vergessen - er ist nur aus Versehen hinter die Anführungszeichen gerutscht :wink:

Code: Alles auswählen

import datetime
delta = datetime.timedelta(minutes=45)
hours = delta.hours*24+delta.seconds/3600.0
wrongspot
User
Beiträge: 5
Registriert: Freitag 27. Juni 2008, 20:58

Beitragvon wrongspot » Samstag 28. Juni 2008, 08:25

Bestens der Code sieht deutlich lesbarer aus, nur bei meinem timedelta kennt er kein hours.

Code: Alles auswählen

'datetime.timedelta' object has no attribute 'hours'


woran kann das liegen?
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Beitragvon numerix » Samstag 28. Juni 2008, 09:27

wrongspot hat geschrieben:Bestens der Code sieht deutlich lesbarer aus, nur bei meinem timedelta kennt er kein hours.

Code: Alles auswählen

'datetime.timedelta' object has no attribute 'hours'


woran kann das liegen?


:oops: Liegt am Fehler in meinem Code:
Muss natürlich "delta.days" heißen, nicht "delta.hours" ...
wrongspot
User
Beiträge: 5
Registriert: Freitag 27. Juni 2008, 20:58

Beitragvon wrongspot » Samstag 28. Juni 2008, 10:12

so klappts, prima und besten Dank
BlackJack

Beitragvon BlackJack » Samstag 28. Juni 2008, 20:12

Ich habe keinen Punkt vergessen, sondern vergessen zu sagen, dass über Allem natürlich ein ``from __future__ import division`` steht. ;-)

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]