Datumsausgabe auf deutsch
| Autor | Nachricht |
|---|---|
|
Verfasst am: 18. 02. 2011 [14:00]
|
|
|
skriptkiddie
Themenersteller
Dabei seit: 11.01.2011
Beiträge: 92
|
Hallo Zusammen, ich gebe mit: <f:format.date format="F Y">@1297897200</f:format.date> folgendes Datum aus: February 2011 Ich möchte aber das Datum in Deutsch ausgegeben bekommen. Wie mache ich das am besten: In PHP würde ich das so machen: PHP
|
|
Verfasst am: 24. 02. 2011 [12:59]
|
|
|
sunixzs
Dabei seit: 18.06.2008
Beiträge: 106
|
Hallo scriptkiddie, ich denke da hilft ein eigener ViewHelper in der Extension: Ordner: Classes/ViewHelpers/Format Datei: StftimeViewHelper.php PHP /**
* Formats a Timestamp or DateTime-Object in strftime()
* @api
*/
class Tx_YourCamelCasedExtenionKey_ViewHelpers_Format_StrftimeViewHelper extends Tx_Fluid_Core_ViewHelper_AbstractViewHelper {
/**
* Render the supplied DateTime object as a formatted date using strftime.
*
* @param mixed $date either a DateTime object or a string (UNIX-Timestamp)
* @param string $format Format String which is taken to format the Date/Time
* @return string Formatted date
* @api
*/
public function render($date = NULL, $format = '%A, %d. %B %Y') {
if ($date === NULL) {
$date = $this->renderChildren();
if ($date === NULL) {
return '';
}
}
if ($date instanceof DateTime) {
try {
return strftime($format, $date->getTimestamp());
} catch (Exception $exception) {
throw new Tx_Fluid_Core_ViewHelper_Exception('"' . $date . '" was DateTime and could not be converted to UNIX-Timestamp by DateTime.', 200000001);
}
}
return strftime($format, (int)$date);
}
}Im Template den NameSpace deklarieren: HTML {namespace tx = Tx_YourCamelCasedExtenionKey_ViewHelpers}Dann kann man den ViewHelper benutzen: HTML <tx:format.strftime date="{MyDateTime}" format="%A, der %d. %B %Y" /> <!-- oder: --> <tx:format.strftime format="%A, der %d. %B %Y" />{MyDateTime}</tx:format.strftime> <!-- oder als Timestamp sollte es auch funktionieren: --> <tx:format.strftime format="%B %Y">1297897200</tx:format.strftime> LG sun Edith sagt: @ vor dem Timestamp im Beispiel entfernt. [Dieser Beitrag wurde 2mal bearbeitet, zuletzt am 24.02.2011 um 13:04.] |
|
Verfasst am: 26. 07. 2011 [21:22]
|
|
|
merzilla
Dabei seit: 30.06.2006
Beiträge: 15
|
Hi, @sunixzs: Wollte mich nur bedanken für den Viewhelper. Hat mir Zeit erspart! Viele Grüße merzilla |
|
Verfasst am: 27. 07. 2011 [10:18]
|
|
|
Eydamos
Dabei seit: 16.12.2010
Beiträge: 54
|
Mich würde interessieren ob das jetzt wirklich einen unterschied macht. Eigentlich sollte der ViewHelper von sun das selbe machen wie format.date. Wie du in deinem Post schon gesagt hast würdest du in PHP date_default_timezone_set machen. Da du das in TYPO3 nicht so einfach machen kannst würde ich dir empfehlen einfach in der .htaccess HTML date.timezone = "Europe/Berlin" zu setzen. Dann werden die Monate und Wochentage auch in Deutsch ausgegeben. |
|
Verfasst am: 27. 07. 2011 [10:24]
|
|
|
sunixzs
Dabei seit: 18.06.2008
Beiträge: 106
|
Moin, kurz noch zwei Anmerkungen. In der modifizierten Methode von mir benötigt man mindestens PHP 5.3 wegen der DateTime->getTimestamp() Methode. Die Methode DateTime->format() (im original ViewHelper) benutzt die Syntax wie bei date() - also nicht lokalisiert. Deswegen benutzte ich strftime(). http://www.php.net/manual/de/datetime.format.php http://www.php.net/manual/de/function.date.php http://pa.php.net/manual/de/function.strftime.php Schönen Tag sun. Edith sagt: Links eingefügt. [Dieser Beitrag wurde 1mal bearbeitet, zuletzt am 27.07.2011 um 10:26.] |
|
Verfasst am: 27. 07. 2011 [10:51]
|
|
|
Eydamos
Dabei seit: 16.12.2010
Beiträge: 54
|
Ah danke für den Hinweis, dieser kleine Unterschied war mir bisher garnicht bewusst geworden. |
|
Verfasst am: 07. 11. 2011 [18:04]
|
|
|
typo3typ
Dabei seit: 14.02.2008
Beiträge: 42
|
Hi, ich verwende fast den gleichen ViewHelper: PHP public function render($date = NULL, $format = '%Y-%m-%d') {
if ($date === NULL OR $date == '0') {
$date = $this->renderChildren();
if ($date === NULL) {
return '';
}
}
if (!$date instanceof DateTime) {
try {
$date = new DateTime($date);
} catch (Exception $exception) {
throw new Tx_Fluid_Core_ViewHelper_Exception('"' . $date . '" could not be parsed by DateTime constructor.', 1241722579);
}
}
return strftime($format,$date->format('U'));
}Wenn ich nun mit HTML <xxx:format.date format="%d. %B %Y um %H:%m Uhr">{message.date}</xxx:format.date> mir das Datum fein formattiert ausgeben will, dann wird irgendwas gerundet. Denn ich erhalte für unterschiedliche Timestamps immer die gleiche Uhrzeit? Für den Timestamp 1320682620 : 07. November 2011 um 17:11 Uhr Für den Timestamp 1320682343 : 07. November 2011 um 17:11 Uhr Für den Timestamp 1320682024 : 07. November 2011 um 17:11 Uhr Zum gegenchecken erhalte ich beim "good old" Elmar ( http://elmar-eigner.de/tstamps.html?zeichen=1320682343&timeformat=1 für den mittleren Timestamp 1320682343 eine ganz andere Uhrzeit - nämlich den 2011-11-07 17:12:23 An der Locale Cfg des Severs kanns nicht liegen, weil mir der Monat ja auch korrekt ausgegeben wird. Die Variante hab ich auch schon erfolglos durchgespielt: HTML <xxx:format.date format="%d. %B %Y">{message.date}</xxx:format.date> um <xxx:format.date format="%H:%m">{message.date}</xxx:format.date> Uhr Kennt jemand dieses Verhalten? Sieht jemand einen hahnebüchenden Fehler? Oder weiß jmd., ob das auf dem Server konfiguriert werden muss? fragt und grüßt t3typ |
|
Verfasst am: 08. 11. 2011 [15:16]
|
|
|
BFSven
Dabei seit: 19.10.2011
Beiträge: 106
|
Wie sieht denn $date im ViewHelper vor dem return aus? |
|
Verfasst am: 08. 11. 2011 [15:24]
|
|
|
sunixzs
Dabei seit: 18.06.2008
Beiträge: 106
|
Hallo, ganz damit befasst habe ich mich aus Zeitgründen nicht. Mir fällt nur gerade ein: Wenn es immer die selbe Ausgabe ergibt, aber Unterschiede erwartet werden, dass es womöglich am Caching liegen könnte. Das schonmal überprüft? LG sun |
|
Verfasst am: 08. 11. 2011 [15:30]
|
|
|
typo3typ
Dabei seit: 14.02.2008
Beiträge: 42
|
BFSven schrieb: Wie sieht denn $date im ViewHelper vor dem return aus? $date ist ein DateTime Object. EDITH: Und $date->format('U') gibt den tstamp so raus, wie ich ihn erwarte... Habe nun erst einmal den Std. Fluid date ViewHelper genommen. Also so: HTML <f:format.date format="d. F Y">{message.date}</f:format.date> um <f:format.date format="H:i">{message.date}</f:format.date> Uhr der tuts auch. Allerdings würd ich schon gern wissen, warum der strftime viewhelper nicht funzt... Beste Grüße [Dieser Beitrag wurde 1mal bearbeitet, zuletzt am 08.11.2011 um 15:32.] |



