Affilinet LastProductChange - welches Format?

  • Sagt mal, kann mir einer von euch sagen, wie ich das Datum der letzten Änderung bei Affilinet verwenden kann?

    Ich nutzte JSON als Datenmodell und dort wird das Datum exakt so übermittelt:

    [LastProductChange] => /Date(1389244740000+0100)/

    Nun stehe ich aber da und habe keine Ahnung, wie ich dieses String in ein Datum umsetzen kann, ohne den selbst nochmals parsen bzw. bearbeiten zu müssen (Slashe weg, Date raus, Klammern weg, am + trennen, Zeitzone dem Stamp hinzurechnen und den Stamp dann in ein Datum umwandeln). Dieses Format muss doch einen Sinn haben, warum das so gesendet wird.

    Beim XML-Output steht selbiges Datum so drinnen:

    <LastProductChange>2014-01-09T06:19:00</LastProductChange>

    So, jetzt dachte ich schon, so rein zum Test, dass das JSON ja für JS gedacht sein könnte, also das Datum mal per JS ausgeführt. Aber auch hier bekomme ich kein gültiges Ergebnis. Aber selbst wenn, ich arbeite mit PHP und nicht mit JS.

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • Folgt man den Erläuterungen hier:

    *** Link veraltet ***

    basiert der Mist auf einem .NET Date Objekt (und Sinn würde ich dem dann nicht zusprechen...).

    In dem Stackoverflow Thread wird aber ein Ansatz geliefert, der JSON.parse Funktion mit einem dateTimeReviver auszustatten, um diesen Dingern Herr zu werden, aber das ist eben eine Lösung für JS - ich weiß nicht, inwieweit Du beim JSON Decode in PHP ähnliches vollbringen kannst.

  • Ah, danke. Werde ich mir mal ansehen. Ich muss aber wohl eh mal einen Grundkurs der IHK in Sachen "Suchen" belegen. Habe mich fusselig gesucht und bin ich zahlreich bei "Stack Overflow" gelandet, aber das hatte ich nicht.

    Aktuell habe ich eine Notlösung, auch wenn die mir nicht gefällt. Ich schreibe den String einfach so in die DB und mache dann einen String-Vergleich. Wobei ich auch sagen muss, dass PHP hier anscheinend auch schon Daten umrechnet, denn die kommen mit +0100 an und in der DB stehen die dann mit -0800 ??

    Edit:
    Ok, So wie es aussieht geht das wohl wirklich nur über einen eigenen Umweg. Also Zeile einlesen, parsen, selbst berechnen und dann ins deutsche Format umrechnen.

    Wie kommt man nur auf so eine bescheuerte Idee??? Warum schrieben die nicht einfach das Datum als normalen Timestamp da rein, notfalls als als ISO mit Zeitzone, aber eben als normales Datum, dann könnte man wenigstens noch strtotime() verwenden.

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(