NAME
Quiq::Duration - Rechnen und Konvertieren von Zeiträumen
BASE CLASS
DESCRIPTION
Ein Objekt der Klasse repräsentiert eine Zeitdauer, die intern als numerischer Wert (Sekunden mit Nachkommastellen) gespeichert wird.
Als externe Repäsentation wird die Darstellung
DdHhMmS.Xs
verwendet, wobei
D = Anzahl Tage
H = Anzahl Stunden
M = Anzahl Minuten
S = Anzahl Sekunden
X = Bruchteil einer Sekunde
Es gelten folgende Eingenschaften:
führende Anteile bis auf Ss fehlen, wenn sie 0 sind
X fehlt, wenn 0
Ss erscheint immer, auch bei 0 Sekunden
die leere Zeichenkette ('') oder undef entspricht 0 Sekunden
der Sekundenanteil kann Nachkommastellen haben
Bei der Instantiierung kann die Zeitdauer auch in Doppelpunkt-Notation übergeben werden:
D:H:M:S.X
METHODS
Konstruktor
new() - Konstruktor
Synopsis
$dur = Quiq::Duration->new($sec);
$dur = Quiq::Duration->new($str);
Description
Instantiiere ein Zeitdauer-Objekt und liefere einen Referenz auf dieses Objekt zurück. Die Zeitdauer kann als numerischer Wert $sec oder als Zeichenkette $str angegeben werden. Die Zeichenkette kann auch in Doppelpunkt-Notation (D:H:M:S.X) angegeben sein.
Objektmethoden
asSeconds() - Dauer in Sekunden
Synopsis
$sec = $dur->asSeconds;
Description
Liefere die Zeitdauer in Sekunden - sofern vorhanden, mit Nachkommastellen.
asString() - Dauer als Zeichenkette
Synopsis
$str = $dur->asString;
$str = $dur->asString($prec);
Description
Liefere die Zeitdauer als Zeichenkette in der Form DdHhMmS.Xs.
asShortString() - Dauer als kürzestmögliche Zeichenkette
Synopsis
$str = $dur->asShortString(@opt);
Options
- -maxUnit => 'd'|'h'|'m'|'s' (Default: 'd')
-
Größte dargestellte Einheit.
- -minUnit => 'd'|'h'|'m'|'s' (Default: 's')
-
Kleinste dargestellte Einheit.
- -notBlank => $bool (Default: 0)
-
Bei einer Zeit von 0 Sekunden wird ein Leerstring geliefert. Ist diese Option gesetzt, erfolgt immer eine Ausgabe - mit -minUnit als Einheit.
- -precision => $n (Default: 0)
-
Anzahl der Sekunden-Nachkommastellen.
Description
Liefere die Zeitdauer als Zeichenkette der Form DdHhMmSs (per Default, siehe Option -maxUnit), wobei alle Anteile, die 0 sind, weggelassen werden, sowohl am Anfang als auch am Ende.
asArray() - Dauer als Array
Synopsis
@arr | $arr = $dur->asArray;
Description
Liefere die Dauer als Array mit den Komponenten ($days,$hours,$minutes,$seconds).
asFFmpegString() - Dauer als Parameter für ffmpeg-Option -t
Synopsis
$str = $dur->asFFmpegString;
Description
Liefere Dauer in der Form wie sie ffmpeg bei der Option -t erwartet, also im Format
H:M:S.XXX
stringToSeconds() - Wandele Zeitdauer-Angabe in Sekunden
Synopsis
$sec = $this->stringToSeconds($str);
Description
Wandele Zeichenkette zur Bezeichnung einer Zeitdauer in die Anzahl Sekunden.
Examples
Zeitdauer-Zeichenkette bestehend aus Tagen, Stunden, Mintuten, Sekunden:
$sec = Quiq::Duration->stringToSeconds('152d5h25m3.457s');
# 13152303.457
Dasselbe mit Doppelpunkt-Notation:
$sec = Quiq::Duration->stringToSeconds('152:5:25:3.457');
# 13152303.457
secondsToString() - Wandele Sekunden in Zeitdauer-Zeichenkette
Synopsis
$str = $this->secondsToString($sec,@opt);
Arguments
Options
- $prec (Default: 0)
-
Anzahl der Nachkommastellen bei den Sekunden. Ist kein Wert angegeben, wird auf ganze Sekunden gerundet.
- $unit (Default: undef)
-
Liefere String fester Breite ab Einheit $unit.
Description
Wandele Anzahl Sekunden in eine Zeichenkette zur Bezeichnung einer Zeitdauer.
VERSION
1.222
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2024 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.