Kernelement der PRO-Version meines WordPress-Plugins JSON Content Importer ist die Template-Engine twig, die auch in Symfony2-PHP-Framework zum einsatz kommt. Von Haus aus kann twig schon einiges, manches leider aber nicht.
Konkret vermisste ich die Mögichkeit, Datum- und Zeitangaben möglichst flexibel einzustellen. Denn ein niederländischer Kunde meines Plugins wollte die niederländische Wochentags-Bezeichnung anzeigen. Damit das möglich ist, habe ich eine Erweiterung für twig geschrieben, die in Aktion wie folgt aussieht:
{{ zeit |
dateformat('%A %m/%d/%y %H:%M:%S', 'Europe/Berlin', 'nl_NL') }}
Das Ergebnis kann man hier sehen: Die Namen der Wochentage sind in niederländischer Sprache angezeigt.
„zeit“ steht dabei für das Feld mit der Datumsangabe im JSON-Feed. die Pipe „|“ bewirkt, dass der folgende Code auf dieses Feld angewendet wird.
Dieser Code ist die Funktion „dateformat“ die wie folgt aussieht:
$twig_extra_filter_dateformat =
new Twig_SimpleFilter('dateformat',
function ($data, $dateformatstr, $datetimezone, $datelocale) {
$curentTimezone = date_default_timezone_get();
date_default_timezone_set($datetimezone);
$validDateLocale = FALSE;
if (preg_match("/([a-z_]*)/i", $datelocale)) {
$validDateLocale = TRUE;
}
if ($validDateLocale) {
$getlocale = setlocale (LC_TIME,"0");
setlocale(LC_TIME, $datelocale);
}
if (!( is_numeric($data) && (int)$data == $data )) {
$data = strtotime($data);
}
$formattedDate = strftime($dateformatstr, $data);
if ($validDateLocale) {
setlocale(LC_TIME, getlocale);
}
date_default_timezone_set($curentTimezone);
return $formattedDate;
});
$data enthält „ziel“, die drei Argumente sind:
- $dateformatstr, z. B. ‚%A %m/%d/%y %H:%M:%S‘: Formatierung des anzuzeigenden Datums gemäß PHP strftime
- $datetimezone, z. B. ‚Europe/Berlin‘: PHP-Zeitzone
- $datelocale, z., B. ’nl_NL‘: PHP Locale für die anzuzeigende Sprache







