FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: drhirn am 20 Januar 2021, 14:21:24

Titel: [gelöst] Perl - Sekunden in HH:MM:SS umwandeln
Beitrag von: drhirn am 20 Januar 2021, 14:21:24
Hallo,

ich habe ein Anzahl an Sekunden. Wie kann ich die mittels Perl am einfachsten/performantesten nach HH:MM:SS umwandeln?

Danke!
Stefan
Titel: Antw:Perl - Sekunden in HH:MM:SS umwandeln
Beitrag von: TomLee am 20 Januar 2021, 14:25:38
FmtTime($seconds) ?

Gruß

Thomas
Titel: Antw:Perl - Sekunden in HH:MM:SS umwandeln
Beitrag von: drhirn am 20 Januar 2021, 14:35:37
Danke.
FmtTime(300) liefert aber 01:05:00? Warum?
Titel: Antw:Perl - Sekunden in HH:MM:SS umwandeln
Beitrag von: betateilchen am 20 Januar 2021, 14:43:31
Weil FmtTime() die falsche Funktion dafür ist.

In welchem Bereich bewegt sich die Sekundenzahl - mehr als einen Tag? (86400 Sekunden)
Titel: Antw:Perl - Sekunden in HH:MM:SS umwandeln
Beitrag von: drhirn am 20 Januar 2021, 14:44:43
Sollte möglichst flexibel sein, auch wenn's wahrscheinlich eher selten länger als ein Tag wird.
Titel: Antw:Perl - Sekunden in HH:MM:SS umwandeln
Beitrag von: betateilchen am 20 Januar 2021, 14:50:59
{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.
Titel: Antw:Perl - Sekunden in HH:MM:SS umwandeln
Beitrag von: reibuehl am 20 Januar 2021, 14:52:12
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
Titel: Antw:Perl - Sekunden in HH:MM:SS umwandeln
Beitrag von: betateilchen am 20 Januar 2021, 14:58:25
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))}
Titel: Antw:Perl - Sekunden in HH:MM:SS umwandeln
Beitrag von: drhirn am 20 Januar 2021, 14:59:46
Zitat von: betateilchen am 20 Januar 2021, 14:58:25Es funktioniert innerhalb FHEM auch ohne POSIX davor.

{strftime('%T', gmtime(300))}

Perfekt! Vielen Dank!