Jahreszahl (Year) umformatieren [z.B.0604 auf 2004-06-01]

Hallo zusammen,

mein ehemaliges MusikProgramm BPM-Studio hat so langsam ausgedient. Es hatte mir immer 4 Digits im Year-Field angezeigt. Drum habe ich um monatsweise erkennen zu können immer im Format MMYY getagged!

Traktor verwendet nun das Format YYYY-MM-DD und macht aus 0406 ohne Umänderung 406-01-01 => unbrauchbar!

Mit anderen Worten: ich möchte aus MMYY nun YYYY-MM-DD machen, wobei DD gerne immer 01 sein darf.

P.S.: Die Suchfunktion hat nur Supportanfragen in genau die andere Richtung ergeben. DANKE also vorab an Detlev & die Cracks :wink:

EIgentlich soll im Feld YEAR auch nur eine 4-stellige Zahl stehen ...

Ersetzen mit regulärem Ausdruck:
Such-String: (\d\d)(\d\d)
Ersetzen String: 20$2-$1-01

@Ohrenkino:
mag sein, aber Traktor schreibt die Tags ja eh um sonst bzw. verwendet sie halt so, ich kanns nicht ändern, mich aber anpassen.

Dein Lösungsvorschlag ist so kplt nicht 1:1 übernehmbar. Beispiel:

0698 => ?
1212 => ?

Edit:
Sorry, habe die Formel falsch gelesen. Beispiel 2 geht ohne Probleme, Beispiel 1 passe ich manuell an. DANKEEEEE!!!!
DANKE trotzdem. Vielleicht kann's Du die Formel "tunen"?

Das Problem ist eher, dass ggf. andere Anwendungen mit dem langen Datum nicht klar kommen. Eigentlich wäre das richtige Feld dafür RELEASETIME, das hat Tag, Monat, Jahr und Uhrzeit.

Ich schlage mal folgendes vor:
Du baust eine Aktionsgruppe mit folgenden Aktionen:

Zuerst drehst du das Datum
(wie oben, nur ohne die 20)
Such-String: (\d\d)(\d\d)
Ersetzen String: $2$1
Dann fügst mit einer "Tag-Feld formatieren Aktion" die richtige Jahreszahle hinzu

$ifgreater($div(%year%,100),14,19%year%,20%year%)

Und nun kommt noch das auseinanderdröseln mit den Bindestrichen:
Ersetzen mit Regulärem Ausdruck:
Such-String: (\d\d\d\d)(\d\d)
Esetzen-String: $1-$2-01

Vielleicht noch zur Erklärung der "richtigen" Jahresezahl:
Ich nehme das Resultat der Ganzzahligen Teilung der gesamten Jahreszahl durch 100.
Bei 1998-04 steht ja im gedrehten Jahr-Feld 9804 DIV 100=98
Bei 2011-09 steht im gedrehten Jahr-Feld 1109 DIV 100 =11
Da wir 2014 haben, kann kein Stück aus diesem Jahrhundert größer als 14 sein - also muss ne 19 davor.
Probiers mal aus an zwei Probedateien.

Das ist leider so nicht richtig. In Beispiel 1) steht bei mir 0498 und in Beispiel 2) dann 0911.

Also immer MMYY. Ich weiß nicht inwiefern dann die Formel oben noch passt. Es ist aber entspannt, weil ich alle Tags mit der Formel aus Deinem ersten Re-Post hingebogen bekomme hat.

Gut bei mir: Alle Year-Tags waren aus 2000 oder neuer. Ein Song aus (Beispiel) April 1998 hieß vorher ja 0498 und wurde zu 2098-04-01 - Einmal nach Datum sortiert konnte ich das dann schnell noch händisch ändern. Und so habe ich knapp 8.000 in rund 1 Stunde rumgewuppt. Im Augenblick muss nur Traktor damit klarkommen und das Feld dort heißt "Release Date", das widerum bezieht seine Infos aus YEAR :frowning:

ohrenkino, gute Idee mit der gleitenden Jahrhundert-Berechnung, und so funktioniert es ...

$add(%YY%,$mul(100,$ifgreater(%YY%,$mod($regexp(%_date%,'^.*(\d{4}).*$','$1'),100),19,20)))

... oder ...

$add(%YY%,$ifgreater(%YY%,$mod($regexp(%_date%,'^.*(\d{4}).*$','$1'),100),1900,2000)) mit %YY% = 13 ==> 2013 mit %YY% = 14 ==> 2014 mit %YY% = 15 ==> 1915

... vorausgesetzt das System ist so eingestellt, dass Mp3tag's %_date% eine vierstellige Jahreszahl liefert, ansonsten muss der reguläre Ausdruck an das jeweils vorhandene Datumformat angepasst werden.

DD.20140204.2233.CET

Diesem Umstand hatte ich Rechnung getragen mit der ersten Aktion, die ich mit "Zuerst drehst du das Datum" eingeleitet hatte.
Dann steht da nämlich sehr wohl 9804 oder 1109 ... und dann müsste auch der Rest funktionieren.

Ja, Asche auf mein Haupt. Wer lesen kann ist klar im Vorteil :slight_smile:

Ähm... jetzt ist mir das ja schon fast peinlich, aber wen es interessiert, ich erkläre mich dann gerne...

Jedenfalls muss ich das ganze für nen Teil meines Datenbestandes nun RÜCKGÄNGIG machen.

Heißt:
1996-05-01 soll wieder zu => 9605 oder
2013-12-01 soll wieder zu => 1312 werden.

Da werden jetzt viele sagen "gähn... kann der gar nix?" Ja, was mp3-Tag bzw. die Programmierung von Aktionen geht: leider ja. Mag / kann mir das fix jemand schreiben? DANKE vorab.

$regexp('1996-05-01','^\d\d(\d\d)-(\d\d)-\d\d$','$1$2') ==> '9605'

DD.20140412.1808.CEST

Hallo Detlev,

habe ich ausprobiert, geht über die Funktion Konvert Tag-Tag oder? (Frage das weil ich sonst über Aktionen ging).

Mit dem String $regexp('1996-05-01','^\d\d(\d\d)-(\d\d)-\d\d$','$1$2') schreibt mir mp3tag tasächlich IMMER 9605 dahin?

Es war als Beispiel gedacht. Allgemeiner gesagt hätte ich schreiben müssen:
Aus: YYYY-MM-DD soll YYMM werden :wink:

Was habe ich falsch gemacht?

Benutze den Konverter "Tag - Tag" oder die Aktion "Tag-Feld formatieren".
Weil du nicht angegeben hast, in welchem Tagfeld sich der entsprechende Datumswert befindet, so habe ich dir einfach nur ein Beispiel gegeben wie es prinzipiell funktioniert mit einer Eingabe-Zeichenkette.

DD.20140413.1320.CEST

Ähm.. der befindet sich aktuell in YEAR (zusätzlich -weil automatisch hinkopiert- noch in RELEASETIME). In YEAR jedenfalls möchte / muss ich den Wert auch ändern.

Tag-Tag oder Aktion "Tagfeld formatieren" ist klar, und ich habe -ohne Studium- auch tatsächlich versucht, Deinen String anzupassen. Aber es muss doch mit Variablen gearbeitet werden? Wirklich selbsterklärend ist mp3tag für solche Zwecke schon leider nicht.

"$regexp" zig klammern und kommas... das sind für ich in dem Fall leider böhmische Dörfer wenn Du verstehst.

Also wie wäre es, wenn du den Platzhalter %YEAR% einsetzt?

$regexp(%YEAR%,'^\d\d(\d\d)-(\d\d)-\d\d$','$1$2') Tagfeld: YEAR Von : 1996-05-01 Nach : 9605

DD.20140413.1348.CEST

... oder ...

$mid(%YEAR%,3,2)$mid(%YEAR%,6,2)

... oder ...

$replace($mid(%YEAR%,3,5),'-',)

DD.20140908.1939.CEST

Ja, das wäre GUT :smiley:

Die Geschichte mit Wald u. Bäumen kennen wir ja. Danke also!