2016-09-26 2 views
1

Ich habe folgende Schnipsel in meinem Code, der "06. Oktober 2016"PHP-Datumsformatierung mit dem Namen des Tages und der Zeit

<?php 
    // german umlauts in date not possible without date formatter 
    $fmt = new IntlDateFormatter('de_DE' ,IntlDateFormatter::FULL, IntlDateFormatter::NONE, 'Europe/Berlin', IntlDateFormatter::GREGORIAN); 
    $fmt->setPattern("MMMM"); 
    $event_date_format = DateTime::createFromFormat('Ymd', $event_date[0]); 
    $dateOp = $event_date_format->format('d') . ". " . $fmt->format($event_date_format) . " " . $event_date_format->format('Y'); 
?> 

ich aber will druckt auch „Montag umfassen, 06. Oktober 2016, 12 : 33 Uhr“

scheine ich kann nicht, dass die Arbeit zu machen, wenn diese Instanz für die Verwendung:

$dateOp = $event_date_format->format('l') . ", " . $event_date_format->format('d') . ". " . $fmt->format($event_date_format) . " " . $event_date_format->format('Y') . ", " . $event_date_format->format('G') . "." . $event_date_format->format('i') ; 

Jede Idee, was ich aus dem Datum todo erhält diese Informationen?

+1

Basierend auf der Zeile, in der Sie die Datumsdaten erhalten ('$ event_date_format = DateTime :: createFromFormat ('Ymd', $ event_date [0]);') scheint es, dass Sie nur Jahr, Monat und Datum erhalten und nicht die Stunden und Minuten, die du willst. – Anton

+0

"Ich kann diese Arbeit nicht machen" ist keine Problemaussage. Was genau erwartest du? Es gibt keine Möglichkeit, "Montag" für den 6. Oktober auszugeben, da es Donnerstag ist. DateTime :: format ('l') gibt den Wochentag in Englisch aus. Sie müssen IntlDateFormatter verwenden, um es zu übersetzen. –

+0

Übrigens, Sie können den format() - Aufruf von DateTime einmal statt oft mit Verkettungen verwenden, versuchen Sie: '$ event_date_format-> format ('l, d. M, G.i');' wodurch Sie viel saubereren Code bekommen . – Anton

Antwort

1

Sie sollten Ihr gesamtes Format mit dem Formatierer einrichten, um die korrekte Ausgabe mit den deutschen Zeichenfolgen zu erhalten.

$fmt = new IntlDateFormatter('de_DE' ,IntlDateFormatter::FULL, IntlDateFormatter::NONE, 'Europe/Berlin', IntlDateFormatter::GREGORIAN); 
// set the format to Samstag, 01. Oktober 2016, 14:30 
$fmt->setPattern("cccc, dd. MMMM YYYY, HH:mm"); 

// adjusted per edit 2: you need will also need to ensure your input $event_date[0] is in a format which includes a time 
$event_date_format = DateTime::createFromFormat('Ymd H:i', $event_date[0]); 

// you can add the Uhr here, or add it in the format, escaping as needed 
$dateOp = $fmt->format($event_date_format)." Uhr"; 

Aktualisierung Formatoptionen Siehe: http://userguide.icu-project.org/formatparse/datetime

Bearbeiten: sorry habe gerade bemerkt, die Anforderung für die Zeit und entsprechend bearbeitet.

Edit 2: Gerade bemerkt Anton wies in einer Antwort darauf hin, dass Ihre Erstellung von $ event_date_format die Zeit nicht enthält - absolut korrekt. Daher ist die Zeit für diese Ereignisse falsch, bis Sie Ihre Eingabe so angepasst haben, dass sie die Uhrzeit enthält.

Verwandte Themen