2016-09-26 86 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不包含时间 - 绝对正确。因此,在调整输入以包含时间之前,这些事件的时间将不正确。