716 Stimmen

Wie konvertiere ich Sekunden in Stunden, Minuten und Sekunden?

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?

31 Stimmen

Das Inverse dieses Problems kann unter Wie kann man einen H:MM:SS Zeit-String in Sekunden in Python umwandeln? gefunden werden.

5voto

teekarna Punkte 854

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

1 Stimmen

Ich erhalte einen anderen Ausgabewert als du, was mich glauben lässt, dass du einen Tippfehler hast. Du meintest wahrscheinlich seconds=5440 anstatt von seconds=5540. Deine Antwort gefällt mir aber trotzdem!

2voto

Lucas Urban Punkte 463

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

Syntax der return_hms() Funktion

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.

1voto

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

0voto

onlyvinish Punkte 415

Ich habe alle Antworten hier angesehen und habe trotzdem meine eigene versucht

def a(t):
  print(f"{int(t/3600)}H {int((t/60)%60) if t/3600>0 else int(t/60)}M {int(t%60)}S")

Ergebnisse:

>>> a(7500)
2H 5M 0S
>>> a(3666)
1H 1M 6S

Python: 3.8.8

0voto

Jessica Haskins Punkte 31

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.com

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.

Powered by:

X