Hallo,
ich habe ein Anzahl an Sekunden. Wie kann ich die mittels Perl am einfachsten/performantesten nach HH:MM:SS umwandeln?
Danke!
Stefan
FmtTime($seconds) ?
Gruß
Thomas
Danke.
FmtTime(300) liefert aber 01:05:00? Warum?
Weil FmtTime() die falsche Funktion dafür ist.
In welchem Bereich bewegt sich die Sekundenzahl - mehr als einen Tag? (86400 Sekunden)
Sollte möglichst flexibel sein, auch wenn's wahrscheinlich eher selten länger als ein Tag wird.
{POSIX::strftime('%T', gmtime(300))}
Das funktioniert auf jeden Fall bis 86400.
Wenn der Wert größer wird, stimmt das Ergebnis hh:mm:ss auch noch, aber Du musst die Tage selbst ausrechnen.
Also ich würde es mit sprintf versuchen:
$timeInSec = 11534;
$timeAsHHMMSS = sprintf("%02d:%02d:%02d", int ($timeInSec / 3600), int (($timeInSec % 3600)/60), $timeInSec % 3600 % 60);
Gruß,
Reiner
Zitat von: reibuehl am 20 Januar 2021, 14:52:12
Also ich würde es mit sprintf versuchen:
Kann man machen, aber perl hat definitiv elegantere Wege, das zu lösen.
Es funktioniert innerhalb FHEM auch ohne POSIX davor.
{strftime('%T', gmtime(300))}
Zitat von: betateilchen am 20 Januar 2021, 14:58:25Es funktioniert innerhalb FHEM auch ohne POSIX davor.
{strftime('%T', gmtime(300))}
Perfekt! Vielen Dank!