Wenn dein IPTV-Programmführer die richtigen Sendungen, aber falsche Zeiten anzeigt — jede Sendung um ein oder zwei Stunden gegenüber der echten Ausstrahlung verschoben — bist du auf einen der hartnäckigsten XMLTV-Fehler überhaupt gestoßen. Die Lösung ist meist eine einzige URL-Änderung. Herauszufinden, in welche Richtung du verschieben musst, dauert etwa fünf Minuten.
Dieser Guide zeigt, wo der Fehler wirklich steckt, wie du den nötigen Offset bestimmst und wie du ihn anwendest. Der EPG-Zeitzonen-Shifter auf dieser Seite übernimmt die eigentliche Verschiebung; dieser Artikel erklärt, wie du ihn korrekt nutzt.
Dieselbe Sendung, zwei Uhren: Das EPG liegt zwei Stunden hinter der Wanduhr, bis der Shifter es ausrichtet.
Warum XMLTV-Zeitzonen-Fehler entstehen
XMLTV ist ein 25 Jahre altes Format. Jede Sendung hat ein start- und stop-Attribut, das so aussieht:
<programme start="20260507180000 +0000" stop="20260507190000 +0000" channel="bbc1">
Die 14 Ziffern sind die Wanduhrzeit; das angehängte +0000 ist der Zeitzonen-Offset, in dem diese Wanduhrzeit gilt. 20260507180000 +0000 bedeutet also „18:00 Uhr UTC am 7. Mai 2026". Der Player liest beides, rechnet in deine lokale Zeitzone um und zeigt „20:00", wenn du in MEZ bist.
Das funktioniert wenn die XMLTV-Datei in sich konsistent ist. Aber XMLTV wird in einer langen Kette von Programmen erzeugt:
- Das Listensystem des Originalsenders, in dessen lokaler Zeitzone.
- Ein regionaler Aggregator, der vielleicht in eine regionale Zone umrechnet.
- Der Scraper des IPTV-Anbieters, der wahrscheinlich noch einmal rundet.
- Der XMLTV-Export deines Anbieters, der einfach ein
+0000hinten dranklatscht — unabhängig davon, ob die Ziffern wirklich in UTC sind.
Jeder dieser Schritte kann einen Zeitzonen-Fehler einschleusen, und das Format hat keine Prüfsumme. Die Ausgabedatei sieht sauber aus. Der Player kann nicht erkennen, dass die Ziffern darin nicht zur deklarierten Zone passen. Das Ergebnis ist ein Guide, der mit großer Überzeugung um eine ganze Stundenzahl daneben liegt.
Eine zweite Fehlerklasse ist, wenn die XMLTV-Datei den Offset komplett weglässt:
<programme start="20260507180000" stop="20260507190000" channel="bbc1">
Ohne Offset muss der Player raten. Die meisten Player nehmen an, „die Ziffern sind in deiner lokalen Zeit"; manche nehmen UTC an. Wenn der Anbieter UTC meinte und dein Player lokal annimmt, ist jede Sendung um deinen lokalen Offset versetzt.
In beiden Fällen sind die zugrundeliegenden Daten korrekt — die Zahlen müssen nur addiert oder subtrahiert werden, um an der richtigen Stelle zu landen.
Den richtigen Offset bestimmen
Die Lösung lautet „addiere N Stunden auf jeden Zeitstempel in der XMLTV-Datei". So findest du N:
Schritt 1: Einen Sender wählen, bei dem du weißt, was gerade läuft
Player öffnen. Einen Sender finden, der gerade live etwas zeigt, was du sicher kennst — Lokalnachrichten um 18:00, die Tagesschau zur vollen Stunde, Primetime auf einem großen Sender. Es geht um einen bekannten Anker: „dieser Sender zeigt X gerade jetzt, zur genau dieser Uhrzeit auf meiner Armbanduhr".
Schritt 2: Schauen, was das EPG sagt
Schau dir den Eintrag „läuft gerade" für denselben Sender im Player an. Notiere die angegebene Startzeit. Sagt er, die Sendung habe um 16:00 begonnen, sie hat aber tatsächlich um 18:00 begonnen, liegt das EPG zwei Stunden zurück — du musst auf jeden Zeitstempel 2 addieren.
Zeigt das EPG, die Sendung „beginnt in zwei Stunden", obwohl sie gerade läuft, liegt das EPG zwei Stunden voraus — du musst 2 abziehen.
Schritt 3: Denselben Offset über mehrere Sender bestätigen
Wähle einen zweiten und dritten Sender und prüfe, ob der Offset gleich ist. Wenn Sender A um +2 versetzt ist und Sender B um -3, hast du kein Zeitzonen-Problem; du hast pro Sender inkonsistente Daten, und eine feste Verschiebung wird nicht beide reparieren. (Inkonsistenz über mehrere Sender ist selten und bedeutet meist, dass der Anbieter Feeds aus mehreren Quellen zusammengeführt hat, ohne die Zonen abzugleichen — beheben lässt sich das nur, indem der Anbieter seine Daten aufräumt.)
In 95 %+ der Fälle ist der Offset über alle Sender hinweg gleich und liegt bei: ±1, ±2, ±3, manchmal ±5 oder ±8 für Nutzer in Zonen weit weg von der Quelle des Anbieters.
Die Verschiebung anwenden
Wenn du den Offset kennst, gibt dir das Shifter-Tool eine neue URL, die das XMLTV deines Anbieters mit genau diesem Versatz auf jedem Zeitstempel ausliefert. Tausche die EPG-URL in deinem Player gegen die neue — und die Zeiten im Guide passen.
Zwei praktische Punkte:
- Der Shifter ist ein Proxy, kein einmaliger Vorgang. Dein Player aktualisiert das EPG alle paar Stunden. Bei jeder Aktualisierung wird das XMLTV deines Anbieters erneut über den Shifter geholt und der Offset erneut angewendet. Es gibt kein Caching auf unserer Seite; die maßgeblichen Daten kommen weiter vom Anbieter — nur mit verschobenen Zeiten.
- Deine Zugangsdaten stehen in der URL. Die meisten IPTV-Anbieter liefern XMLTV unter einer URL wie
http://server/xmltv.php?username=...&password=.... Der Shifter liest diese Zugangsdaten nur im Moment der Anfrage, um die Quelle zu holen — er loggt sie nicht, cacht sie nicht, indiziert sie nicht. Der Query-String wird außerdem entfernt, bevor unsere Access-Logs geschrieben werden.
Was der Shifter nicht behebt
Einige verwandte Probleme sehen aus wie Zeitzonen-Fehler, sind aber keine:
Sendungen sind mal synchron, mal nicht
Wenn das EPG manchmal richtig und manchmal nicht stimmt, ist es kein Zeitzonen-Problem. Mögliche Ursachen:
- Die Daten des Anbieters sind veraltet. Ältere Sendungseinträge werden in langsamem Takt aktualisiert; neuere kommen aus einem frischeren Feed. Beide Feeds können in unterschiedlichen Zonen sein, gemischt in derselben XMLTV-Datei. Ohne Mithilfe des Anbieters schwer zu beheben.
- Sommerzeit. Wenn deine lokale Zeitzone Sommerzeit kennt, das XMLTV des Anbieters aber nicht (oder umgekehrt), ändert sich der Offset zweimal im Jahr um eine Stunde. Eine feste Verschiebung passt nur für das halbe Jahr, für das du sie kalibriert hast.
Speziell für Sommerzeitprobleme kannst du zwei verschobene URLs vorhalten — eine pro Halbjahr — und die EPG-Quelle im Player zweimal im Jahr umstellen. Lästig, aber funktioniert.
Der Guide ist leer, nicht falsch
„Keine Informationen" / leerer Guide ist ein anderes Problem. Siehe „EPG lädt nicht" beheben — die Ursache dort ist meist eine Nichtübereinstimmung der tvg-id zwischen Playlist und XMLTV, nicht die Zeitzone.
Einzelne Sender sind falsch, die meisten richtig
Wenn alles andere stimmt und nur ein oder zwei Sender daneben liegen, sind die Quelldaten dieser Sender beim Anbieter fehlerhaft. Eine feste Verschiebung würde die richtigen Sender kaputt machen, um die falschen zu reparieren. Entweder den Anbieter bitten, die Daten zu korrigieren, oder akzeptieren, dass die Zeiten dieser Sender Näherungen bleiben.
Warum wir den Offset nicht automatisch erkennen
Der Shifter nimmt den Offset als expliziten Parameter, statt zu raten. Wir könnten theoretisch die Datei holen, Sendungs-Startzeiten mit „jetzt" vergleichen und schätzen. Wir tun es nicht, weil:
- Die „richtige Antwort" davon abhängt, welchen Sender du als Anker nimmst. Verschiedene Sender könnten widersprüchliche Werte ergeben.
- Ein falscher Auto-Tipp schlimmer ist als nachzufragen. Wenn wir still um den falschen Wert verschieben, bekommst du einen Guide, der konsistent um einen anderen Wert falsch ist — und du verschwendest Zeit beim Debuggen.
- Der Nutzer den Kontext hat. Er weiß: „die BBC-One-Nachrichten um 18:00 stehen im Guide gerade als 16:00". Das Tool kann dieses Wissen mit einem Klick anwenden; aus Netzbeobachtung herzuleiten ist unzuverlässig.
Nach der Korrektur
Bestätige mit einem weiteren Durchlauf von Schritt 1 oben: bekannter Sender, aktuelle Sendung, im Player die Startzeit prüfen. Sie sollte jetzt zur Wanduhrzeit passen. Wenn ja, ist die Korrektur dauerhaft — dein Player aktualisiert weiter über die Shifter-URL, und der Offset bleibt angewendet.
Wenn noch etwas anderes nicht stimmt (Sender, die nicht mitverschoben wurden, falsche IDs, Lücken in der Abdeckung), sind das eigene Probleme — und der nächste Schritt ist der EPG-Validator. Der Validator parst eine XMLTV-Datei und meldet strukturelle Probleme unabhängig vom Timing — nützlich, wenn du wissen willst „ist die Datei selbst sauber aufgebaut", statt „stimmen die Zeiten".
Für alles andere auf der IPTV-Seite decken der Xtream-Zugangsdaten-Prüfer und der M3U-Playlist-Tester die Playlist- und Zugangsdaten-Ränder ab. Zusammen mit dem Zeitzonen-Shifter erledigen diese vier Tools den Großteil der Fehlersuche, die Leute sonst im Dunkeln in Foren betreiben.