So fügen Sie der aktuellen Zeit in Python Stunden hinzu

158

Ich kann die aktuelle Zeit wie folgt abrufen:

from datetime import datetime
str(datetime.now())[11:19]

Ergebnis

'19:43:20'

Jetzt versuche ich 9 hours, die oben genannte Zeit zu verlängern. Wie kann ich der aktuellen Zeit in Python Stunden hinzufügen?

Shiva Krishna Bavandla
quelle
12
Um die aktuelle Zeit so zu formatieren, schauen Sie sichdatetime.now().strftime('%H:%M:%S')
eumiro

Antworten:

365
from datetime import datetime, timedelta

nine_hours_from_now = datetime.now() + timedelta(hours=9)
#datetime.datetime(2012, 12, 3, 23, 24, 31, 774118)

Verwenden Sie dann die Zeichenfolgenformatierung, um die relevanten Teile zu erhalten:

>>> '{:%H:%M:%S}'.format(nine_hours_from_now)
'23:24:31'

Wenn Sie nur die datetime formatieren, können Sie Folgendes verwenden:

>>> format(nine_hours_from_now, '%H:%M:%S')
'23:24:31'

Oder, wie @eumiro in Kommentaren betont hat - strftime

Jon Clements
quelle
Warum ist das nicht die beste Antwort? Gibt es irgendwelche Nebenwirkungen? nicht gemeldeter Fehler?
Braza
6
@Braza das OP hat sich einfach nicht entschieden, es zu akzeptieren. Keine Nebenwirkungen oder Fehler.
Jon Clements
@ JonClements Vielen Dank für Ihre Antwort :). Ich habe es getestet und bestätige.
Braza
3
Dies ist jedoch nicht DST-sicher.
Antti Haapala
1
In der Frage wird gefragt, wie Stunden hinzugefügt werden sollen. Das Subtrahieren von Stunden kann jedoch auf zwei Arten erfolgen: 1) Verwenden Sie den Subtraktionsoperator ( -) anstelle des Additionsoperators ( +). gemäß der Dokumentation " timedeltaObjekte unterstützen bestimmte Additionen und Subtraktionen mit Datum und datetimeObjekten" 2) Übergeben Sie einen negativen Wert an einen der timedeltaParameter; In der Dokumentation heißt es: "Argumente können Ints, Longs oder Floats sein und können positiv oder negativ sein."
Die rote Erbse
20

Importieren Sie Datetime und Timedelta :

>>> from datetime import datetime, timedelta
>>> str(datetime.now() + timedelta(hours=9))[11:19]
'01:41:44'

Aber der bessere Weg ist:

>>> (datetime.now() + timedelta(hours=9)).strftime('%H:%M:%S')
'01:42:05'

Sie können verweisen strptimeund sich strftimeverhalten, um besser zu verstehen, wie Python Datums- und Zeitfelder verarbeitet

mu 無
quelle
Die Links zu Python-Dokumenten geben Einblicke in das Parsen und Formatieren von Datum und Uhrzeit .
hc_dev