Seite 1 von 1

Zu Zeit Minuten addieren

Verfasst: Montag 17. März 2014, 20:01
von _nohtyp_
Ich weiß, die Frage wurde schon oft gestellt. Trotzdem kann ich mein Problem nicht lösen:
Ich habe folgendes Datum und Zeit:

Code: Alles auswählen

2014-03-17T07:45:00
Ich versuche mit timedelta 45 Minuten draufzuaddieren:

Code: Alles auswählen

end_zeit = start_zeit + timedelta(minutes=45) 
Fehlermeldung:

Code: Alles auswählen

TypeError: cannot concatenate 'str' and 'datetime.timedelta' objects
Aber ich habe doch keinen string, oder doch?

Re: Zu Zeit Minuten addieren

Verfasst: Montag 17. März 2014, 20:36
von BlackJack
@_nohtyp_: Ganz offensichtlich hast Du da eine Zeichenkette. Das sagt die Ausnahme mehr als deutlich. :-)

Re: Zu Zeit Minuten addieren

Verfasst: Montag 17. März 2014, 20:41
von _nohtyp_
Also start_zeit wird so gebildet:

Code: Alles auswählen

start_zeit = datetime(int(jahr), int(monat), int(
                tag), int(stunde), int(minute)).isoformat()
P.S: Ja, ich mache jetzt wieder das Vertretungsplan Tool. :D

Re: Zu Zeit Minuten addieren

Verfasst: Montag 17. März 2014, 20:59
von Sirius3
@_nohtyp_: Du mußt Dich schon entscheiden, ob Du einen String willst oder nicht.

Re: Zu Zeit Minuten addieren

Verfasst: Montag 17. März 2014, 21:02
von _nohtyp_
Ich will das ganze im Datetime-Format. Wo werden strings erzeugt?

Re: Zu Zeit Minuten addieren

Verfasst: Montag 17. März 2014, 21:11
von EyDu
Quizfrage: Was macht die isoformat-Methode? ;-)

Re: Zu Zeit Minuten addieren

Verfasst: Montag 17. März 2014, 21:16
von _nohtyp_
Wandelt in String um. :D Ok, dass wusste ich nicht.
Und wie löse ich nun das Problem? Wenn ich isoformat weglasse, kommt: 'datetime.datetime' object has no attribute 'decode'

Re: Zu Zeit Minuten addieren

Verfasst: Montag 17. März 2014, 21:20
von BlackJack
@_nohtyp_: Wo kommt das? Nicht in dem bisher gezeigtem Code oder?

Re: Zu Zeit Minuten addieren

Verfasst: Montag 17. März 2014, 21:24
von _nohtyp_
_nohtyp_ hat geschrieben:Also start_zeit wird so gebildet:

Code: Alles auswählen

start_zeit = datetime(int(jahr), int(monat), int(
                tag), int(stunde), int(minute)).isoformat()
Ich meine, wenn ich hier isoformat weglasse, läuft es nicht mehr. Wie löse ich jetzt das Problem mit end_zeit? Also wie beseitige ich den Fehler?

Re: Zu Zeit Minuten addieren

Verfasst: Montag 17. März 2014, 21:52
von Sirius3
@_nohtyp_: Dein Problem ist nicht, dass es mit »end_zeit« nicht funktioniert, sondern dass Dein Programm nicht mehr funktioniert, wenn Du »isoformat« wegläßt. Objekte werden am Besten erst dann in Strings umgewandelt, wenn sie ausgegeben werden.

Re: Zu Zeit Minuten addieren

Verfasst: Montag 17. März 2014, 22:37
von DaftWullie
@_nohtyp_:

bei mir geht das:

Code: Alles auswählen

>>> from datetime import timedelta, datetime
>>> start_zeit = datetime(1,2,3,4,5,6)
>>> start_zeit
datetime.datetime(1, 2, 3, 4, 5, 6)
>>> end_zeit = start_zeit + timedelta(minutes=45)
>>> print start_zeit.isoformat(), end_zeit.isoformat()
0001-02-03T04:05:06 0001-02-03T04:50:06
:)

Re: Zu Zeit Minuten addieren

Verfasst: Dienstag 18. März 2014, 09:33
von Leonidas
Ja, das Problem ist ja auch, dass _nohtyp_ das durchaus in isoformat umwandeln muss, nur halt nach der Addition der Minuten und nicht davor.

Oder ups, habe ich jetzt die ganze Lösung schon verraten? ;-)