Zu Zeit Minuten addieren

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.
Antworten
_nohtyp_
User
Beiträge: 127
Registriert: Mittwoch 8. Januar 2014, 15:38

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?
BlackJack

@_nohtyp_: Ganz offensichtlich hast Du da eine Zeichenkette. Das sagt die Ausnahme mehr als deutlich. :-)
_nohtyp_
User
Beiträge: 127
Registriert: Mittwoch 8. Januar 2014, 15:38

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
Sirius3
User
Beiträge: 18335
Registriert: Sonntag 21. Oktober 2012, 17:20

@_nohtyp_: Du mußt Dich schon entscheiden, ob Du einen String willst oder nicht.
_nohtyp_
User
Beiträge: 127
Registriert: Mittwoch 8. Januar 2014, 15:38

Ich will das ganze im Datetime-Format. Wo werden strings erzeugt?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Quizfrage: Was macht die isoformat-Methode? ;-)
Das Leben ist wie ein Tennisball.
_nohtyp_
User
Beiträge: 127
Registriert: Mittwoch 8. Januar 2014, 15:38

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'
BlackJack

@_nohtyp_: Wo kommt das? Nicht in dem bisher gezeigtem Code oder?
_nohtyp_
User
Beiträge: 127
Registriert: Mittwoch 8. Januar 2014, 15:38

_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?
Sirius3
User
Beiträge: 18335
Registriert: Sonntag 21. Oktober 2012, 17:20

@_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.
DaftWullie
User
Beiträge: 37
Registriert: Donnerstag 17. Mai 2012, 21:28

@_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
:)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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? ;-)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten