Ergebnis 1 bis 13 von 13

Thema: Funktion parseDate mit ausgeschriebenem deutschen Monatsnamen verwenden?

  1. #1
    Marotzke
    Gast

    Frage Funktion parseDate mit ausgeschriebenem deutschen Monatsnamen verwenden?

    Hi!

    Unter den TYPOlight Einstellungen kann man ja eine Datums-Formatierung angeben ... z.B. sowas hier "d. M. Y H:i".

    Netterweise wird das auch schon übersetzt, allerdings in der oben gezeigten Variante auf 3 Buchstaben gekürzt. Nach ein wenig Suche in den Dateien wurde ich in der "system/libraries/System.php" fündig, Zeile 332, Funktion "parseDate".

    Soweit ich rausgefunden habe, ist wohl im untenstehenden Switch "case 3" das was ich brauche. Allerdings weiss ich nicht, wie ich da hinkomme, weil ich den PHP-Code darüber nicht verstehe. Desweiteren ist die Backend-Hilfe auf dem kleinen roten PopUp leider nicht vollständig.

    Wie funktioniert das, dass ich in etwa so ein Datum hier erhalte:

    14. Oktober 2009

    ( Das Sahnehäubchen obenauf wäre, wenn man die Zeit separat setzen könnte (z.B. mit $this->time), statt dass alles unter $this->date Aber hierfür müsste ich dann wohl die Klasse selbst ändern (in dem Fall vom News-Modul?) - was wiederum nicht so updatefreundlich wäre. --- aber ich schweife ab ).

    Hauptsächlich wüsste ich gerne, wie ich das Datum ausgeschrieben formatiere.


    Grüße,
    Chris

  2. #2
    Contao-Nutzer
    Registriert seit
    25.08.2009.
    Beiträge
    70

    Standard

    Hallo Chris,

    du musst dazu gar nichts in PHP-Dateien verändern. Alle Einstellungen machst du im Backend unter System > Einstellungen. Ein ausgeschriebener Monat wird als großes F angegeben. Also: "d. F Y"

    Zur Formatierung des Datums siehe hier:
    http://de3.php.net/manual/de/function.date.php

    Viele Grüße,
    der Graf

  3. #3
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Information

    Hallo Chris,

    und mit $this->parseDate('d.m.y H:i',$this->time) kannst du auch in den Templates deine Datumme nochmal individuell formatieren. Schau dir aber erst mit $this->showTemplateVars() an, welche Variablen von den Templates ausgegeben werden, das muss nämlich nicht immer $this->time sein.

    Damit kriegst du dann auch noch dein Sahnehäubchen hin, denn natürlich kannst du z.B. $this->time in deinem Template auch mehrmals parsen und unterschiedlich formatieren.

    Andreas

  4. #4
    Marotzke
    Gast

    Standard

    Habs ausprobiert, klappt einwandfrei - tausend Dank!

    Dass es so einfach ist hätte ich echt nicht gedacht. Wieder ein Pluspunkt für das System

    Das mit den Template-Vars notier ich mir auch (ps: dass es $this->time gibt wusste ich gar nicht ... war einfach ein Beispiel aus Wunschdenken heraus .. ich probier es mal aus).

  5. #5
    Marotzke
    Gast

    Frage

    Hallo,

    es trat leider doch noch ein unerwartetes Problem auf ... das neue Datum funktioniert zwar im Frontend, aber wenn ich nun eine neue Nachricht anlegen möchte, passiert das hier:

    Datumsformat in den Einstellungen:
    d\. F Y H:i

    Vorher (das hier stürzte auch so ab):
    d. F Y H:i

    PHP-Code:
    Fatal errorUncaught exception Exception with message Invalid date format "d\. F Y" thrown in /pfad-zur-website/system/libraries/Date.php on line 187
    #0 /pfad-zur-website/system/libraries
    /Widget.php(540): Date->getRegexp('d\. F Y')
    #1 /pfad-zur-website
    /system/modules/backend/TextField.php(105): Widget->validator('05\. Oktobe...')
    #2 /pfad-zur-website
    /system/libraries/Widget.php(420): TextField->validator('05\. Oktobe...')
    #3 /pfad-zur-website
    /web/system/modules/backend/DataContainer.php(251): Widget->validate()
    #4 /pfad-zur-website
    /system/drivers/DC_Table.php(1473): DataContainer->row()
    #5 /pfad-zur-website
    /system/modules/backend/Backend.php(208): DC_Table->edit()
    #6 /pfad-zur-website
    /typolight/main.php(99): Backend->getBackendModule('news')
    #7 /pfad-zur-website
    /typolight/main.php(294): Main->run()
    #8 {main} 
    .... aber wieso wird dann das Bestehende richtig angezeigt?

  6. #6
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hat das jetzt was mit der Templatemodifikation zu tun? Welche Einstellungen, wo? Hast du den Backslash da rein gemacht? Wenn ja, wieso?

    Andreas

  7. #7
    Contao-Nutzer
    Registriert seit
    22.07.2009.
    Ort
    Holzsußra
    Beiträge
    13

    Standard Datumsformat bei Bildergalerie

    Hallo, ich habe gerade "parseDate" mit der Bildergalerie ausprobiert. Leider ohne Erfolg. Vieleicht auch ein Denkfehler.

    PHP-Code:
    <?php echo $this->parseDate("F Y"$this->date); ?>
    Möchte das der Monat und das Jahr ausgegeben wird.

    Wenn ich die Ausgabe so schreibe wie oben, bekommen ich Januar 1970.

    Vieleicht weiss ja jemand weiter.

  8. #8
    AG CMS-Garden
    Contao-Urgestein
    Avatar von lindesbs
    Registriert seit
    05.06.2009.
    Ort
    Oer-Erkenschwick
    Beiträge
    4.154
    Partner-ID
    keine
    User beschenken
    Wunschliste

    Standard

    TL schreibt basierend auf deinen Einstellungen das Datum schon um. Also musst du das wieder zurueckkonvertieren und dann in dein gewuenschtes Format wandeln :
    PHP-Code:
    <?php echo $this->parseDate("F Y",strtotime($this->date)); ?>
    Funktioniert hier mit dem Newsmodul
    von Willi Voltz aus PR 500: Henry George sagte einmal: »Kultur ist Zusammenarbeit.«


    Contao-Hosting: begeisterter Uberspace-Nutzer

  9. #9
    Contao-Nutzer
    Registriert seit
    22.07.2009.
    Ort
    Holzsußra
    Beiträge
    13

    Standard

    Hat super geklappt, vielen Dank für die schnelle Antwort.

  10. #10
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo,

    obwohl's ja geklappt hat noch ein Kommentar dazu.

    Die TL-Funktion parseDate() erwartet als zweiten Parameter (dort wo bei dir am Anfang $this->date stand) einen Unix Timestamp. Das ist so eine lange Zahl, z.B. 1114131480. Das sind die Sekunden ab einem bestimmten Datum (hab ich grad nicht im Kopf) bis zu dem Datum, welches mit dieser Zahl ausgedrückt wird. $this->date liefert so eine Zahl nicht, sondern ein bereits formatiertes Datum. In den meisten Templates wird außer dem formatierten Datum $this->date aber auch ein Unix Timestamp ausgegeben, z.B. mit $this->time. Wenn dein Template das ausgibt, dann brauchst du die PHP-Funktion strtotime() nicht, sondern kannst anstelle von $this->date einfach $this->time nehmen. Ob dein Template einen Unix-Timestamp ausgibt und was es sonst noch für Variablen ausgibt kannst du dir mit $this->showTemplateVars() insTemplate geschrieben, dann im FE ausgeben lassen (im Quelltext ansehen, dort ist es eingerückt und besser lesbar).

    Gruß Andreas
    Geändert von Andreas (29.10.2009 um 14:38 Uhr) Grund: ergänzt

  11. #11
    Contao-Nutzer
    Registriert seit
    22.07.2009.
    Ort
    Holzsußra
    Beiträge
    13

    Standard

    Hallo Andreas, ich habe mir mit
    PHP-Code:
    <?php echo $this->showTemplateVars(); ?>
    die Variablen ausgben lassen.
    Da wird das Datum als: date => 29.10.2009 ausgegeben.
    PHP-Code:
    <?php echo $this->parseDate("d.m.Y"$this->date); ?>
    = nicht möglich.

    Sonst hatte ich immer mit
    PHP-Code:
    <?php echo $this->parseDate("d.m.Y"$this->timestamp); ?>
    das Datum formatiert aber das lief auch nicht so wie ich wollte :-(

  12. #12
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Da du nicht angegeben hast in welchem Template du die Ausgabe wünschst, du sprichst nur von Bildergalerie, habe ich mal die Templates ce_gallery.tpl, ce_gallery_fullsize.tpl, ce_dfgallery.tpl, df_default.tpl überprüft. Keins von diesen Templates gibt irgendeine Variable mit Datum oder Timestamp aus. So kann ich das natürlich nicht nachvollziehen.

    $this->timestamp hab ich glaub ich noch nie gesehen, an $this->tstamp und $this->time meine ich mich erinnern zu können, aber wie gesagt, raten bringt da nix, einfach die Variablen ausgeben und ansehen. Übrigens die Ausgabe besser im Quelltext der FE-Ausgabe ansehen, dort ist sie eingerückt und somit lesbarer.

    Wird dir nur ein formatiertes Datum ausgebeben, dann machst du es natürlich wie lindesbs es gezeigt hat, aber mit dem Unix Timestamp wäre es sicherer, da dort immer auch eine Uhrzeit enthalten ist und ein Timestamp immer im richtigen Format vorliegt.

    Andreas

  13. #13
    Marotzke
    Gast

    Standard

    Hallo,

    danke für die weitere Hilfe. In der Tat lag es am News-Modul, wo diese Art der Datumsformatierung nicht direkt unterstützt wurde.

    @Andreas:
    Der Backslash vor dem Punkt war nur ein Test, weil ich dachte das wird sonst als regulärer Ausdruck und nicht als Punkt betrachtet (ohne Backslash klappte auch nicht).


    Ich probiere beide Varianten heute mal aus, danke!

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 2 (Registrierte Benutzer: 0, Gäste: 2)

Ähnliche Themen

  1. [gelöst] Tages- & Monatsnamen auf Deutsch
    Von solades im Forum Nachrichten/Events/FAQ
    Antworten: 8
    Letzter Beitrag: 15.09.2014, 23:32
  2. Wochentag-Namen trotz parseDate() nur auf englisch.
    Von ChrMue im Forum Entwickler-Fragen
    Antworten: 2
    Letzter Beitrag: 17.02.2011, 06:42
  3. Englische Monatsnamen in calendar_eventsattend
    Von wdburgdorf im Forum Sonstige Erweiterungen
    Antworten: 2
    Letzter Beitrag: 24.02.2010, 20:43
  4. Fehler bei deutschen Umlauten im BackEnd
    Von burgard01 im Forum Entwickler-Fragen
    Antworten: 2
    Letzter Beitrag: 21.01.2010, 12:01
  5. [gelöst] News_short Monatsnamen ausgeschrieben -> geht nicht
    Von mbartsch im Forum Nachrichten/Events/FAQ
    Antworten: 1
    Letzter Beitrag: 10.12.2009, 09:33

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •