| 

.NET C# Java Javascript Exception

2
Für die Berechnung eine Datums in der Vergangenheit gebe ich an eine Funktion ein Datum, welches -X Tage gerechnet werden soll.

Beispiel:
datum = '2011-03-21'

#1. Berechnung => OK
zeitraum = (datetime.date.today() - datetime.timedelta(10)).strftime('%Y-%m-%d')
>>> 2011-03-11

#2. Berechnung => Nicht OK
zeitraum = (datum - datetime.timedelta(10)).strftime('%Y-%m-%d')
>>> TypeError: unsupported operand type(s) for -: 'str' and 'datetime.timedelta'


Ich habe bei der 2. Berechnung vieles ausprobiert (u.a. time.strptime, time.strftime), doch leider bin ich nicht zum gewünschten Datum gekommen.

Hat jemand eine Idee was ich falsch mache, bzw. wie ich an mein Wunschdatum komme?
22.03.2011
FX 437 1 9
FX 437 1 9
2 Antworten
3
>>> import datetime
>>> import time
>>> from datetime import datetime
>>> from datetime import timedelta
>>> from time import mktime
>>> datum = '2011-03-21'
>>> datum1 = time.strptime(datum, '%Y-%m-%d')
>>> datum2 = (datetime.fromtimestamp(mktime(datum1)) - timedelta(10))
>>> datum2.strftime('%Y-%m-%d')
'2011-03-11'
22.03.2011
Daniel Kuppitz 596 1 7
1
Das liegt daran, dass datum ein string ist und von diesem dann ein timedelta abgezogen werden soll, was nicht geht.
"unsupported operand type(s) for -"
Heisst für den Operator minus sind zwei Operanden angegeben, mit denen er nicht umgehen kann. Nämlich string (datum) und timedelta.

Hat also nichts mit strftime oder so zu tun, sonder tritt schon vorher auf.
22.03.2011
DaSpors 4,2k 2 8
Ich wollte eigentlich mittels strptime und danach strftime meinen string in eine timedelta/datum umwandeln. Ist dies überhaupt möglich?
FX 22.03.2011

Stelle deine Python-Frage jetzt!