[TYPO3-german] Fluid <f:format.date> addiert 1 Stunde

Renzo Bauen typo3 at conpassione.ch
Thu Jan 8 13:10:14 CET 2015


Halt, halt, nicht so schnell.

Die Behandlung von Zeiten und Datumswerte ist ein hoch
wissenschaftliches Problem, nicht nur aber auch in PHP.
Es gibt zwei Zeitformate und auch zwei Klassen von Funktionen in PHP um
diese zu bearbeiten.

Wenn Du nach DateTime suchst, geht alles ums UTC-Zeitformat.
Wenn Du nach strtotime suchst, dann geht es um UNIX-Timestamps.

D.h. strtotime kann nicht so gut mit Zeitzonen umgehen wie DateTime. Und
zudem gibt es in TYPO3 noch etliche Schwierigkeiten ein Datumsfeld in
Fluid zum Bearbeiten auszugeben.
Zwar hilft bei der Anzeige der Viewhelper f:format.date aber wenn man
einen so angezeigten Wert verändern und wieder in die DB Speichern will,
funktioniert so gut wie nichts mehr. Und zudem unterscheiden sich Fluid
und das BE-Rendering noch (um die Zeitzone....). Offenbar verwendet das
BE die einfachen Funktionen wie strtotime und Fluid die Klassen wie
DateTime.

Wenn man etwas googelt und in den Issues nachschaut gibt es hunderte von
Einträgen. Nur über eine einfach Einstellung im Installtool lässt sich
das nicht beheben!
Selbst die von PHP gelieferten Funktionen sind offenbar nicht ganz
fehlerfrei...! Und vor allem hat sich da zwischen PHP <=5.1 und PHP >5.1
ziemlich viel getan. Es ist deshalb nicht unerheblich zu wissen, mit
welcher PHP Version gearbeitet wird.

Es gibt offenbar viele, die eigene Viewhelper geschrieben haben oder den
Property Mapper angepasst haben oder sogar den Core. Aber es gibt keine
wirklich gute, für alle Fälle einsetzbare Lösung.

Ich habe selber schon sehr vieles versucht:
Z.b. habe ich neben dem eigentlichen Datumsfeld, welches in der DB und
im Model vorhanden ist (nennen wir es "eventdate") und vom Typ
"DateTime" ist, im Model ein zweites Feld "streventdate") angelegt.
Jetzt werden zwischen dem Model und dem Fluid-Formular zwei anstatt ein
Feld ausgetauscht. Ich kann so im Model bei der get und der set Methode
selber die Datumsumwandlung vornehmen. 
Sowas funktioniert zwar ist aber alles andere als elegant.
Wie man googeln kann, funktioniert die Anzeige mit dem Viewhelper
f:format.date eigentlich sehr gut. Aber wenn ich das nicht die UTC
Formatierung nehme, sondern z.B. d.m.Y dann kann ich nie mehr einen
Datumswert speichern. Denn der Validator von Extbase akzeptiert
ausschliesslich das UTC Format. 
Für den Deutschen Sprachraum funktioniert das nicht, denn ich kann den
Leuten nicht zumuten ein Datum in der Form 2015-01-08T00:00:00+01:00
einzugeben! Es muss möglich sein 8.1.2015 als gültiges Datum zu
akzeptieren, ohne Zeit und ohne strickte Formatvorgaben. Und dafür gibt
es eben keine einfache Lösung...!

Beste Grüsse, Renzo

-- 
conPassione gmbh
CH-3661 Uetendorf
+41 33 345 00 92 




More information about the TYPO3-german mailing list