Ich habe eine Funktion, die Informationen in Sekunden zurückgibt, aber ich muss diese Informationen in Stunden:Minuten:Sekunden speichern.
Gibt es einen einfachen Weg, um die Sekunden in diesem Format in Python umzuwandeln?
Ich habe eine Funktion, die Informationen in Sekunden zurückgibt, aber ich muss diese Informationen in Stunden:Minuten:Sekunden speichern.
Gibt es einen einfachen Weg, um die Sekunden in diesem Format in Python umzuwandeln?
dateutil.relativedelta
ist praktisch, wenn Sie auch Stunden, Minuten und Sekunden als Fließkommazahlen benötigen. datetime.timedelta
bietet keine ähnliche Schnittstelle.
from dateutil.relativedelta import relativedelta
rt = relativedelta(seconds=5440)
print(rt.seconds)
print('{:02d}:{:02d}:{:02d}'.format(
int(rt.hours), int(rt.minutes), int(rt.seconds)))
Gibt aus
40.0
01:30:40
Hier ist eine Methode, die ich immer benutze: (egal wie ineffizient sie ist)
seconds = 19346
def zeroes (num):
if num < 10: num = "0" + num
return num
def return_hms(second, apply_zeroes):
sec = second % 60
min_ = second // 60 % 60
hrs = second // 3600
if apply_zeroes > 0:
sec = zeroes(sec)
min_ = zeroes(min_)
if apply_zeroes > 1:
hrs = zeroes(hrs)
return "{}:{}:{}".format(hrs, min_, sec)
print(return_hms(seconds, 1))
ERGEBNIS: 5:22:26
Die return_hms()
Funktion wird wie folgt verwendet:
Die erste Variable (second) ist die Anzahl von Sekunden, die in h:m:s umgewandelt werden sollen.
Die zweite Variable (apply_zeroes) ist das Format:
0 oder weniger: Keine Nullen überhaupt anwenden
1: Nullen auf Minuten und Sekunden anwenden, wenn sie unter 10 liegen.
2 oder mehr: Nullen auf jeden Wert (einschließlich Stunden) anwenden, wenn sie unter 10 liegen.
Hier ist ein einfaches Programm, das die aktuelle Uhrzeit liest und sie in eine Tageszeit in Stunden, Minuten und Sekunden umwandelt
import time as tm #importiere Paket Zeit
timenow = tm.ctime() #lokale Zeit im Zeichenformat abrufen
timeinhrs = timenow[11:19]
t=tm.time()#time.time() gibt die Zeit in Sekunden seit dem Epoch aus.
print("Zeit im HH:MM:SS-Format ist: ",timeinhrs,"\nZeit seit dem Epoch ist: ",t/(3600*24),"Tage")
Die Ausgabe ist
Zeit im HH:MM:SS-Format ist: 13:32:45
Zeit seit dem Epoch ist: 18793.335252338384 Tage
Die oben genannten Lösungen funktionieren, wenn Sie einen einzelnen Wert für "Sekunden seit Mitternacht" an einem Datum in ein Datumsobjekt oder einen String mit HH:MM:SS umwandeln möchten, aber ich bin auf dieser Seite gelandet, weil ich dies für eine ganze DataFrame-Spalte in Pandas tun wollte. Wenn sich jemand fragt, wie man dies für mehr als einen einzelnen Wert gleichzeitig tun kann, was schließlich für mich funktioniert hat, war:
mydate='2015-03-01'
df['datetime'] = datetime.datetime(mydate) + \
pandas.to_timedelta(df['seconds_since_midnight'], 's')
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
31 Stimmen
Das Inverse dieses Problems kann unter Wie kann man einen H:MM:SS Zeit-String in Sekunden in Python umwandeln? gefunden werden.