2016-09-26 88 views
1

格式化我在下面的代碼片斷,打印「06.十月2016」PHP日期與當天的名稱和時間

<?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'); 
?> 

然而,我想還包括「蒙塔格,06十月2016年,12 :33 UHR」

我似乎無法使這項工作使用時,此例如:

$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') ; 

任何想法,我有什麼待辦事項得到這個信息出來的日期?

+1

根據您獲取日期數據的行('$ event_date_format = DateTime :: createFromFormat('Ymd',$ event_date [0]);'),您似乎只能得到年份,月份和日期,而不是你想要的小時和分鐘。 – Anton

+0

「我不能做這項工作」不是一個問題陳述。你期望什麼?由於是星期四,因此無法在10月6日輸出「Montag」。 DateTime :: format('l')輸出英文週日。您需要使用IntlDateFormatter來翻譯它。 –

+0

順便說一句,你可以使用DateTime的format()調用一次而不是多次連接,試試:'$ event_date_format-> format('l,d。M,G.i');'這會讓你得到更乾淨的代碼, – Anton

回答

1

您將需要使用格式化程序設置您的整個格式,以使德語語言字符串獲得正確的輸出。

$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"; 

的格式選項,請參閱此頁:http://userguide.icu-project.org/formatparse/datetime

編輯:對不起,剛纔注意到了時代的要求和相應的編輯。

編輯2:剛剛注意到Anton在回覆中指出,您創建的$ event_date_format不包含時間 - 絕對正確。因此,在調整輸入以包含時間之前,這些事件的時間將不正確。