Seite 1 von 1

timedelta in stunden umrechnen

Verfasst: Freitag 27. Juni 2008, 21:39
von wrongspot
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

Verfasst: Freitag 27. Juni 2008, 22:12
von BlackJack
In Stunden: ``delta.days * 24 + delta.seconds / 3600``.

Verfasst: Freitag 27. Juni 2008, 23:30
von wrongspot
ok das ist schon mal ein Anfang, aber bei einem timedelta von ( 0:45:00 ) kommt laut code genau 0 raus. mhhhh......

Verfasst: Samstag 28. Juni 2008, 00:23
von wrongspot
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

Verfasst: Samstag 28. Juni 2008, 04:53
von numerix
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

Verfasst: Samstag 28. Juni 2008, 08:25
von wrongspot
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?

Verfasst: Samstag 28. Juni 2008, 09:27
von numerix
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" ...

Verfasst: Samstag 28. Juni 2008, 10:12
von wrongspot
so klappts, prima und besten Dank

Verfasst: Samstag 28. Juni 2008, 20:12
von BlackJack
Ich habe keinen Punkt vergessen, sondern vergessen zu sagen, dass über Allem natürlich ein ``from __future__ import division`` steht. ;-)