Frank Seitz
and 1 contributors

NAME

Prty::Duration - Rechnen und Konvertieren von Zeiträumen

BASE CLASS

Prty::Object

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

METHODS

Konstruktor

new() - Konstruktor

Synopsis

    $dur = Prty::Duration->new($sec);
    $dur = Prty::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.

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);

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.

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.

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.

Example

Zeitdauer-Zeichenkette bestehend aus Tagen, Stunden, Mintuten, Sekunden:

    $sec = Prty::Duration->stringToSeconds('152d5h25m3.457s');
    # 13152303.457

secondsToString() - Wandele Sekunden in Zeitdauer-Zeichenkette

Synopsis

    $str = $this->secondsToString($sec,@opt);

Description

Wandele Anzahl Sekunden in eine Zeichenkette zur Bezeichnung einer Zeitdauer.

Arguments

$sec

Anzahl Sekunden, ggf. mit Nachkommastellen.

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.

VERSION

1.108

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2017 Frank Seitz

LICENSE

This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.