seltsames Jahr aus Musik Metadaten ?

MiMa

Top Contributor
Aktuell lese ich Metadaten von Audiodateien und da ist ein seltsames Phänomen aufgetaucht.
Alle Audiodateien einer Single, konnte bis auf eine davon, das Jahr korrekt eingelesen und konvertiert werden.
Es funktionierte, solange der String eine vierstellige Zahl war.
Seltsamerweise kam in der nicht funktionierenden Datei nicht nur ein Vierstelliger String, sondern eine Datetime als String abgelegt.

In Directory Opus konnte ich es nicht richtig erkennen da es dort korrekt aussah.
Anschließend habe ich es in MP3Tag kontrolliert und erkannte direkt das Problem.
MetadatenJahr.JPG
Mein Setter sieht wie folgt aus
Java:
 public void setJahr(String jahrS) {
        LOG.info("Ausgabe Jahr : " + jahrS);
        int jahrI;
        if (jahrS != null) {
            jahrI = Integer.parseInt(jahrS);
            LOG.info("Jahr umgewandelt zu integer : " + jahrI);
        } else {
            jahrI = 0;
        }
        this.jahr = jahrI;
        LOG.info("Speichert das Jahr : " + this.jahr + "\n");
    }

Ausgabe in meiner Logdatei:
Code:
2021-01-11 15:53:34 [main] INFO  SoundStation.MP3 - Ausgabe Jahr : 2013-11-22T08:00:00Z

Wie würde man das Problem am besten das Problem lösen?
Als erstes und unkomplizierteste Lösung würde mir einfallen die ersten vier Zeichen heraus zu nehmen und dies als Jahr zu verwenden.
Den String als Jahr mit der Klasse DateTime um zu rechnen würde an dem Jahr nichts ändern und demnach könnte mein erster Lösungsansatz vollkommen ausreichen?

Danke
Mi
 
Laut Doku wäre das vermutlich korrekt:

The timestamp fields are based on a subset of ISO 8601. When being as
precise as possible the format of a time string is
yyyy-MM-ddTHH:mm:ss (year, "-", month, "-", day, "T", hour (out of
24), ":", minutes, ":", seconds), but the precision may be reduced by
removing as many time indicators as wanted. Hence valid timestamps
are
yyyy, yyyy-MM, yyyy-MM-dd, yyyy-MM-ddTHH, yyyy-MM-ddTHH:mm and
yyyy-MM-ddTHH:mm:ss. All time stamps are UTC. For durations, use
the slash character as described in 8601, and for multiple non-
contiguous dates, use multiple strings, if allowed by the frame
definition.
 
Laut Doku sind beide Varianten gültig.
Für mich reicht es wenn das Jahr "yyyy" vorhanden ist.
Demnach habe ich bei Strings die länger als 4 Zeichen sind die vordersten als Jahresdatum abgeschnitten.
 

Zurück
Oben