InfoCenter

Format der Spieldauer von Audio- und Videodateien

Die Spieldauer von Audio- und Videodateien kann in Programmen wie dem DateilistenSchreiber und zukünftig auch im AudioPlayer flexibel und nach Ihren eigenen Wünschen angezeigt und ausgegeben werden. Damit können Sie die Spalte mit der Dauer in Ihren Dateilisten und Playlisten individuell und je nach Bedarf anpassen.

Das Format beziehungsweise die Darstellung von Tagen, Stunden, Minuten, Sekunden und Millisekunden kann über eine Format-Maske wie beispielsweise "m:ss" (Minuten:Sekunden) angegeben werden. In diesem Tutorial schauen wir uns alle Möglichkeiten dieser Maske wie die Ausgabe von führenden Nullen, die Definition optionaler Zeitangaben, den Umgang mit fehlenden Zeitangaben sowie die Nutzung von sinnbehafteten Buchstaben als solche an und zeigen Ihnen am Ende des Tutorials einige Anwendungsbeispiele. Starten möchten wir aber mit der Liste aller grundsätzlich zur Verfügung stehenden Platzhalter.

Grundsätzliche Platzhalter

Grundsätzlich bieten Ihnen der DateilistenSchreiber und der AudioPlayer fünf verschiedene Platzhalter in Form von Buchstaben, die für Tage, Stunden, Minuten, Sekunden und Millisekunden in der Format-Maske stehen und in beliebiger Reihenfolge verwendet werden können:

PlatzhalterBedeutung
dTage
hStunden
mMinuten
sSekunden
vMillisekunden

Diese Platzhalter können in der Format-Maske mit beliebigen anderen Zeichen kombiniert werden. Also zum Beispiel mit einem Doppelpunkt wie in "h:mm" für die Anzeige von Stunden und Minuten. Dabei sind Sie nicht nur auf ASCII-Zeichen beschränkt sondern können sich auch an der unerschöpflichen Auswahl an beliebigen Unicode-Zeichen bedienen. Wenn Sie einen dieser sinnbehafteten Buchstaben als solchen verwenden möchten, also ohne dass dieser durch die entsprechende Zeitangabe ersetzt wird, müssen Sie diesen Buchstaben escapen. Wie das funktioniert erfahren Sie im Abschnitt über das Escapen.

Führende Nullen

Um Zeitdauern wie sowohl 1 Stunde und 10 Minuten als auch 1 Stunde und 1 Minute bündig untereinander in eine Liste schreiben zu können, bietet sich die Verwendung von führenden Nullen an. Die Dauer von einer Stunde und einer Minute sollte also idealerweise nicht als "1:1" dargestellt werden sondern als "1:01", so dass der Doppelpunkt an derselben Stelle steht wie bei zweistelligen Minutenwerten wie "1:10".

Führende Nullen können Sie durch eine Wiederholung des jeweiligen Platzhalters in der Anzahl Ihrer gewünschten führenden Nullen inklusive des jeweiligen Wertes erreichen. Das Beispiel aus dem letzten Abschnitt würden Sie also mit der Format-Maske "h:mm" umsetzen können - der Stundenanteil wird ohne führende Nullen geschrieben, der Minutenanteil wird mit führenden Nullen auf mindestens zwei Stellen gebracht. Würden Sie stattdessen "h:m" schreiben, wäre das Ergebnis "1:1" statt "1:01". Natürlich lassen sich auch mehr als zwei Stellen mit führenden Nullen auffüllen, wie auch die Beispiele aus der folgenden Tabelle zeigen:

Maske1 Minute10 Minuten100 Minuten1000 Minuten
m1101001000
mm01101001000
mmm0010101001000
mmmm0001001001001000
h:m0:10:101:4016:40
h:mm0:010:101:4016:40
h:mmm0:0010:0101:04016:040
hh:mm00:0100:1001:4016:40
hhh:mm000:01000:10001:40016:40
h:mm:ss0:01:000:10:101:40:0016:40:00

In den ersten 4 Beispielserien der Tabelle sehen Sie, wie sich die Masken "m", "mm", "mmm" und "mmmm" auf verschiedenlange Minutenangaben auswirken. In jedem der Beispiele wird die volle Zahl der Minuten ausgegeben, jedoch ändert sich je nach Anzahl der m's die Anzahl der führenden Nullen und ob überhaupt führende Nullen zum Einsatz kommen.

Dies funktioniert nicht nur für einzelne Platzhalter sondern auch für Kombinationen von Platzhaltern, wie die nächsten Zeilen der Tabelle zeigen, in denen die Anzahl der führenden Nullen des Stundenanteils sowie des Minutenanteils variiert werden. Zuletzt wird mit der Maske "h:mm:ss" ein sehr typisches Beispiel zur Darstellung von Stunden, Minuten und Sekunden mit führenden Nullen gezeigt.

Die Beispiele der Tabelle demonstrieren auch, was passiert, wenn die darzustellende Zahl mehr Stellen hat als die Anzahl der wiederholten Platzhalter. In diesem Fall wird nicht etwa die Zeitangabe abgeschnitten, sondern immer komplett in voller Länge dargestellt, auch wenn diese über die vermeintliche Stellenbegrenzung hinausgeht.

Optionale Zeitangaben

Nicht immer möchten wir alle Elemente der Format-Maske ausgeben. Nehmen wir zum Beispiel den Fall, dass wir für Spieldauern über einer Stunde die Zeit im Format "h:mm:ss" anzeigen lassen möchten, für Zeiten unter einer Stunde soll jedoch der Teil mit der Stundenangabe nicht angezeigt werden. Wir möchten also Zeitangaben wie 1:00:00, 30:00 und 0:15 in unserer Liste sehen. Wenn wir die Maske "h:mm:ss" verwenden würden, wären die Angaben für diese Zeiten jedoch 1:00:00, 0:30:00 und 0:00:15 - wir erhielten jede Menge unerwünschte führende Nullen. Würden wir die Stunden aber weglassen und stattdessen die Maske "m:ss" verwenden, entspräche das Ergebnis ebenso nicht unserer Wunschvorstellung: Dieses Mal wären zwar 30:00 und 0:15 wie gewünscht, eine Zeit von einer Stunde würde jedoch als 60:00 dargestellt, da wir den Platzhalter "h" gar nicht mehr verwenden und die Stunden deswegen den Minuten angerechnet würden.

Um diese Unterscheidung zu realisieren und optionale Bestandteile der Format-Maske zu definieren, können wir in der Format-Maske Kleinbuchstaben und Großbuchstaben nutzen. Sowohl mit dem Buchstaben h als auch mit dem Buchstaben H werden die Stunden angezeigt. Mit h immer, mit H jedoch nur wenn die Stundenanzahl größer als Null ist.

Um das eingangs erwähnte Beispiel zu realisieren könnten wir also zum Beispiel die Format-Maske "H:Mm:ss" verwenden. Durch die Großbuchstaben definieren wir, dass sowohl die Stundenangabe als auch die erste führende Null der Minutenangabe optional ist und nur bei Bedarf ausgegeben werden soll. Die zweite Stelle der Minutenangabe soll jedoch nicht optional sein und immer gezeigt werden, auch wenn sie 0 ist. Für 15 Sekunden möchten wir schließlich die Ausgabe 0:15 erhalten. Würden wir stattdessen mit der Maske "H:mm:ss" arbeiten, wären beide Stellen der Minutenangabe nicht optional und wir erhielten für die 15 Sekunden 00:15 als Ausgabe. Würden wir mit der Maske "H:MM:ss" arbeiten, bekämen wir für 15 Sekunden nur "15" ausgegeben, da nun beide Stellen der Minuten mit den Großbuchstaben als optional definiert sind und daher nur für Zeiten über 59 Sekunden relevant sind. Für Spieldauern über mindestens einer Stunde wäre das Ergebnis für all diese Masken identisch.

In der folgenden Tabelle haben wir die im Text erwähnten Beispiele noch einmal übersichtlich für Sie gegenübergestellt:

Maske1 Stunde30 Minuten15 Sekunden
h:mm:ss1:00:000:30:000:00:15
m:ss60:0030:000:15
mm:ss60:0030:0000:15
H:mm:ss1:00:0030:0000:15
H:Mm:ss1:00:0030:000:15
H:MM:ss1:00:0030:0015

Weitere Anwendungsbeispiele für optionale Zeitbestandteile für verschiedene Zeitdauern finden Sie am Ende dieses Tutorials im Abschnitt "Beispiele".

Nutzung von sinnbehafteten Buchstaben als solche

Auch wenn wir in unseren bisherigen Beispielen immer den Doppelpunkt als Trennzeichen zwischen die einzelnen Zeitangaben gesetzt haben, lassen sich auch beliebige andere Zeichen und Buchstaben in der Format-Maske verwenden und mit den Platzhaltern für die Zeitangaben kombinieren. Wie aber lässt sich ein Buchstabe, der auch als Platzhalter dient, als solcher übernehmen ohne dass er durch die Zeitangabe, für die er auch steht, ersetzt wird? Wie teilen wir dem DateilistenSchreiber oder dem AudioPlayer mit, dass ein bestimmter Buchstabe stehen bleiben soll?

Nehmen wir das folgende Beispiel. Wir möchten als Dauer nicht einfach bloß "h:mm:ss" oder dergleichen schreiben sondern nutzen als Format-Maske den folgenden Text:

h Stunden - m Minuten - s Sekunden

Für eine Dauer von beispielsweise 7384 Sekunden (2:03:04) bekämen wir mit dieser Format-Maske jedoch das folgende unerfreuliche Ergebnis:

2 4tun0en - 3 3inuten - 4 4ekun0en

Nicht nur unsere erwünschten einzeln stehenden Platzhalter h, m und s wurden durch die Zeitangaben ersetzt sondern auch alle Vorkommnisse der Buchstaben in den Wörtern "Stunden", "Minuten" und "Sekunden", die wir eigentlich als solche stehen lassen wollten.

Die Lösung dieses Problems ist das Escapen. Wenn wir einen Buchstaben nicht durch eine Zeitangabe ersetzen möchten, können wir diesem Buchstaben ein Apostroph voranstellen. Jedes Zeichen hinter einem Apostroph bleibt unangetastet und wird nicht ersetzt. Wir schreiben also stattdessen als Format-Maske:

h 'Stun'den - m 'Minuten - s 'Sekun'den

Und erhalten damit unser gewünschtes Ergebnis:

2 Stunden - 3 Minuten - 4 Sekunden

Zeichen, die keine besondere Bedeutung als Platzhalter für eine Zeitangabe haben, müssen nicht escaped werden und können einfach so in der Format-Maske stehen. Also so, wie wir auch schon mit dem Doppelpunkt verfahren sind.

Fehlende Zeitangaben

Vielleicht haben Sie sich schon gefragt, was passiert, wenn theoretisch benötigte Zeitangaben gar nicht in der Format-Maske vorkommen. Nehmen wir zum Beispiel eine Dauer von einer Stunde, zehn Minuten und zehn Sekunden und die Maske "m:ss". Obwohl unsere Dauer über die Minuten hinausgeht, bieten wir dem DateilistenSchreiber oder dem AudioPlayer keinen Platzhalter für Stunden an, wie es zum Beispiel mit der Maske "h:mm:ss" wäre. Was passiert in diesem Fall? Werden die Stunden abgeschnitten?

Nein. Das Ergebnis wird 70:10 sein (70 Minuten und 10 Sekunden). Da die Minutenangabe die größtmögliche Einheit in dieser Maske ist, werden größere Einheiten, also Stunden und Tage zu dieser Angabe hinzu gezählt. Wir erhalten also 1 Stunde (60 Minuten) + 10 Minuten = 70 Minuten.

Mit dieser Eigenschaft können Sie die Dauer von Audiodateien und Videodateien auch in lediglich einer einzigen Einheit ausgeben. Benutzen wir zum Beispiel die Maske "s", würde die Dauer ausschließlich in Sekunden angezeigt. Für das Beispiel ergäbe sich "4210", also 1 Stunde (3600 Sekunden) + 10 Minuten (600 Sekunden) + 10 Sekunden. Mit der Maske "v" erhielten wir die Dauer in Millisekunden, also 4210000 (4210 Sekunden * 1000).

In der Praxis weniger relevant wäre eine Maske wie "h:s", in der wir zwar Stunden und Sekunden vorsehen, jedoch keine Minuten. Der Vollständigkeit halber möchten wir uns aber auch diesen Fall ansehen. Für unser Beispiel ergäbe sich das Ergebnis "1:610". Die Stunde wird duch das "h" ausgegeben, während die fehlenden 10 Minuten (600 Sekunden) zu dem Sekunden-Teil hinzu gezählt werden, um diese nicht zu vergessen. Ein verbleibender Rest wird demnach immer zum größtmöglichen verfügbaren Zeitbestandteil hinzugefügt.

Bis jetzt haben wir uns angesehen, was passiert, wenn wir Zeitangaben nach oben und in der Mitte weglassen. Was aber passiert in der anderen Richtung? Was passiert, wenn wir kleinere Zeitangaben wie zum Beispiel die Sekunden weglassen? In diesem Fall werden mögliche kleinere Angaben einfach ausgelassen und abgeschnitten. Wenn wir für unser Beispiel von einer Stunde, 10 Minuten und 10 Sekunden also die Maske "m" verwenden, wäre das Ergebnis "70" (1 Stunde = 60 Minuten + 10 Minuten) und die 10 Sekunden würden abgeschnitten. Nutzen wir die Maske "h" werden nicht nur die Sekunden sondern auch die Minuten abgeschnitten und wir erhielten das Ergebnis "1" (1 Stunde). Bei einer Verwendung der Maske "d" wäre das Ergebnis sogar "0": Da wir mit unserer Dauer von einer Stunde, 10 Minuten und 10 Sekunden nicht auf die mindestens 24 Stunden für einen Tag kommen, liegt der Tagesanteil bei "0" und da wir in unserer Format-Maske keine kleineren Einheiten als den Tag anbieten, werden alle kleineren Einheiten wie Stunden, Minuten und Sekunden vollständig abgeschnitten und es verbleibt "0". In einem solchen Fall wird auch nicht gerundet. Auch eine Dauer von 23 Stunden wäre 0 Tage.

Diese Praxis wurde auch schon in allen unseren bisherigen Beispielen angewendet, ohne dass wir es gemerkt haben: Da wir in keinem Beispiel den Platzhalter "v" für die Millisekunden zusammen mit den Sekunden, Minuten oder Stunden verwendet haben, wurde der Anteil der Millisekunden immer unbemerkt abgeschnitten.

Maske1 Stunde, 10 Minuten und 10 Sekunden
h:mm:ss1:10:10
m:ss70:10
h:s1:610
d0
h1
m70
s4210
v4210000

In dieser Tabelle haben wir erneut die im Text erwähnten Beispiele als Gegenüberstellung zusammengefasst.

Beispiele

Zuletzt möchten wir uns noch einige Beispiele ansehen, die den Inhalt der einzelnen Abschnitte dieses Tutorials zusammenfassen und einen Eindruck davon vermitteln, wie verschiedene Zeiten in den verschiedenen Formaten dargestellt werden. In den Spalten der Tabelle finden Sie verschiedene Zeitdauern in Sekunden und Millisekunden sowie die jeweilige Darstellung mit unterschiedlichen Format-Masken in den Zeilen der Tabelle.

Maske1s10s100s1.000s10.000s100.000s111.111ms
hh:mm:ss00:00:0100:00:1000:01:4000:16:4002:46:4027:46:4000:01:51
h:mm:ss0:00:010:00:100:01:400:16:402:46:4027:46:400:01:51
H:mm:ss00:0100:1001:4016:402:46:4027:46:4001:51
H:Mm:ss0:010:101:4016:402:46:4027:46:401:51
H:MM:ss01101:4016:402:46:4027:46:401:51
H:MM:Ss1101:4016:402:46:4027:46:401:51
h:mm0:000:000:010:162:4627:460:01
m:ss0:010:101:4016:402:46:4027:46:401:51
mm:ss00:0100:1001:4016:402:46:4027:46:4001:51
d:hh:mm:ss0:00:00:010:00:00:100:00:01:400:00:16:400:02:46:401:03:46:400:00:01:51
D:HH:Mm:ss0:010:101:4016:402:46:401:03:46:401:51
s:vvv1:00010:000100:0001000:00010000:000100000:000111:111
m:ss:vvv0:01:0000:10:0001:40:00016:40:0002:46:4027:46:40:0001:51:111
mm:ss:vvv00:01:00000:10:00001:40:00016:40:0002:46:4027:46:40:00001:51:111
'm'm:ssmm:01mm:10mm:100mm:1000mm:10000mm:100000mm:111
h:s0:10:100:1000:10002:280027:28000:111
d:v0:10000:100000:1000000:10000000:100000001:136000000:111111
d:m:v0:0:10000:0:100000:1:400000:16:400000:166:400001:226:400000:1:51111
d0000010
h00002270
m0011616616661
s110100100010000100000111
v100010000100000100000010000000100000000111111

Zunächst sehen Sie in der Tabelle verschiedene Format-Masken für Stunden, Minuten und Sekunden mit unterschiedlichen Anzahlen von führenden Nullen sowie festen und optionalen Zeit-Bestandteilen. Anschließend folgen ähnliche Masken ohne den Stundenanteil sowie Demonstrationen des Tagesanteils und des Millisekundenanteils.

In der Zeile mit der Maske "'m'm:ss" folgt eine Demonstration des Escapens von Platzhaltern. Die Buchstaben m und m sollen nicht durch den Minutenanteil ersetzt werden sondern als solche stehen bleiben. Das Ergebnis zeigt, wie auch der Minutenanteil zu den Sekunden als einzige Zeitangabe in dieser Maske hinzu gezählt wird und jedes Ergebnis mit "mm:" beginnt.

Die nächste drei Zeilen mit den Format-Masken "h:s", "d:v" und "d:m:v" demonstrieren, was geschieht wenn Platzhalter zwischen einer kleineren und einer größeren Einheit ausgelassen werden. Im Falle dieser fehlenden Zeitangaben wird die Zeit der nächstmöglichen kleineren Einheit zugerechnet. Bei Verwendung der Maske "h:s" werden die Minuten den Sekunden zugerechnet, bei Verwendung der Maske "d:v" werden die Stunden, Minuten und Sekunden den Millisekunden hinzugerechnet und bei Verwendung der Maske "d:m:v" werden die Stunden den Minuten hinzugerechnet sowie die Sekunden den Millisekunden.

Zuletzt zeigt die Tabelle alle verfügbaren Platzhalter alleine und ohne Kombination mit anderen Platzhaltern oder Zeichen. Für all diese Format-Masken zeigt die Tabelle das Ergebnis für Dauern von 1 Sekunde, 10 Sekunden, 100 Sekunden, 1000 Sekunden, 10.000 Sekunden, 100.000 Sekunden sowie 111.111 Millisekunden.