2017-02-06 30 views
-1

Ich bin neu bei Python, und ich versuche etwas Mathe auf Daten zu machen. Das Startdatum wird aus einer Swagger-Schnittstelle gezogen, die hier zu finden ist: https://esi.tech.ccp.is/latest/#!/Market/get_markets_region_id_ordersHinzufügen eines "Datetime" -Objekts zu einem Zeitdelta

Das entsprechende Feld ist das Feld "ausgestellt". Derzeit, dass unter Verwendung eines Timedelta wie dieses Ich versuche hinzuzufügen:

date = market_ops.data[i].issued completion_date = date + datetime.timedelta(days=int(market_ops.data[i].duration))

Dies gibt den Fehler: unsupported operand type(s) for +: 'Datetime' and 'datetime.timedelta'

Bedeutet dies das „ausgestellt“ Objekt ist kein datetime.datetime Objekt, aber eine andere Art von Objekt, oder mache ich etwas anderes falsch?

+0

Es tut in der Tat klingen wie Sie don‘ t habe eine "datetime.datetime" aber etwas anderes mit dem Namen "Datetime". –

+0

Gibt es eine Möglichkeit für mich, dieses Objekt irgendwie zu inspizieren? Die Suche nach 'python 'Datetime' ist genauso nutzlos wie in diesem Fall. – FutureShocked

+0

Sie könnten 'help (date)' versuchen, um zu sehen, ob Ihnen das Anhaltspunkte gibt. –

Antwort

1

Ich denke, Sie müssen die Zeichenfolge Daten in eine datetime.datetime Instanz vor dem Hinzufügen der datetime.timedelta zu ihm konvertieren.

Etwas in diese Richtung:

date_string = market_ops.data[i].issued 
date = datetime.datetime.strptime(date_string[:10], '%Y-%m-%M') 
completion_date = date + datetime.timedelta(days=int(market_ops.data[i].duration)) 

Beachten Sie, dass das Ergebnis in den berechneten completion_date auch datetime.datetime vom Typ sein.

+0

Sie haben Recht, das ist ziemlich genau das, was ich getan habe. Ich wollte gerade meine Lösung teilen – FutureShocked

0

Wie @martineau unten vorgeschlagen, ich brauche nur das Objekt ‚Datetime‘ stringify, die eine Prahlerei primitiv, und dann strptime() die resultierende Zeichenfolge als solche:

start_date = datetime.datetime.strptime(str(market_ops.data[i].issued)[0:19], 
               '%Y-%m-%dT%H:%M:%S') 
completion_date = start_date + datetime.timedelta(days=int(market_ops.data[i].duration)) 
Verwandte Themen