Hallo sga,
ich versuche es mal^^ Wenn ich es nicht schaffe, dir das näher zu bringen, dann kannst du mir auch gerne ein Szenario nennen. Vielleicht hilft das dann weiter.
Ich geh nun mal davon aus, dass man mit Frontend Formularen umgehen kann. In meinem Array $arrWidgets sind die Felder meines Formulars und deren Daten.
Mit folgenden Zeilen greife ich nun auf den Inhalt des Feldes namens "endTime"
PHP-Code:
$timeString = $arrWidgets['endTime']->value;
Als ergebnis bekomme ich z.B. "08:00". Unsere Tabelle speichert aber nur Timestamps. Also ist der nächste Schritt den String in Timestamp zu transformieren. Das Problem hierbei ist ja, dass die Formatierung von der Zeit (vorallem von Datum) sich von Sprach zu Sprache unterscheidet. Wie sicherlich bekannt, kann man die Formatierungen von Zeit und Datum im Backend einstellen.
Auf die Formatierung kann man folgendermaßen zugreifen:
PHP-Code:
$GLOBALS['TL_CONFIG']['timeFormat'] // für Zeit
$GLOBALS['TL_CONFIG']['dateFormat'] // für Datum
In Contao existiert eine Klasse namens Date, was das Arbeiten mit Zeit/Datum um einiges erleichtert. Wir erstellen nun ein Objekt der Klasse und füllen diese mit dem String und die Formatierung. So z.B.:
PHP-Code:
$dateObjekt = new Date($timeString, $GLOBALS['TL_CONFIG']['timeFormat']);
Der Zweite Parameter (Format) ist wichtig, da sonst Contao bzw. das Date objekt nicht weiß, wie er diesen String verarbeiten soll. Ob im String eine Zeit oder ein Datum steht. (Als standard wird das date Format genommen.)
Da wir nun ein Date Objekt haben, dass wir mit unsere Zeit gefüttert haben, wollen wir nun zum schluß den Timestamp ermitteln. Dies macht man ganz einfach so:
PHP-Code:
$timestamp = $dateObjekt->tstamp;
Diesen Timestamp könnt ihr dann in die DB speichern. Gegebenfalls vorher mit dem Datum synchronisieren. (ich weiß nicht, ob es überhaupt nötig ist, hab es nicht ohne synchronisation ausprobiert^^)
Ich hoffe ich hab es Anschaulich und Verständlich erklärt.
Grüße David
Lesezeichen