2016-01-02 155 views
2

我创建了工作正常的查询,我只是有这些“遥相呼应”这两个日期的问题:更改日期格式

echo "du : $item->session_du | "; 
echo "au : $item->session_au<br /><br />"; 

回声被显示在以下格式的日期:

2016年1月11日23:00:00

我需要的输出格式

Lundi将军11维耶2016

我还没有找到一个办法做到这一点,所以如果有人能告诉我如何解决这个问题,我将不胜感激。

查询:

$candidateid = JRequest::getVar('gprh_fabrik_user_enrollment___id'); 
$db = JFactory::getDbo(); 
    $query = $db->getQuery(true); 
    $query 
     ->select (array('gprh_fabrik_user_enrollment.id', 'gprh_fabrik_user_training_124_repeat.nom_formation', 'gprh_fabrik_user_training_124_repeat.intitule_session', 'gprh_fabrik_user_training_124_repeat.session_du', 'gprh_fabrik_user_training_124_repeat.session_au')) 
    ->from('gprh_fabrik_user_enrollment') 
    ->leftJoin('gprh_fabrik_user_enrollment_repeat_choix_formation ON gprh_fabrik_user_enrollment.id = gprh_fabrik_user_enrollment_repeat_choix_formation.parent_id') 
    ->leftJoin('gprh_fabrik_user_training_124_repeat ON gprh_fabrik_user_enrollment_repeat_choix_formation.choix_formation = gprh_fabrik_user_training_124_repeat.id') 
    ->leftJoin('gprh_fabrik_user_training ON gprh_fabrik_user_training_124_repeat.parent_id = gprh_fabrik_user_training.id') 
    ->having('gprh_fabrik_user_enrollment.id = ' . $db->quote($candidateid)) 
    ->group('gprh_fabrik_user_enrollment.id, gprh_fabrik_user_training_124_repeat.nom_formation, gprh_fabrik_user_training_124_repeat.intitule_session, gprh_fabrik_user_training_124_repeat.session_du, gprh_fabrik_user_training_124_repeat.session_au'); 
    $db->setQuery($query); 
    $row = $db->loadObjectList(); 
    echo "<div style='font-family: arial, helvetica, sans-serif; font-size: 11pt;'><OL>"; 
    foreach ($row as $item) 
    { 
     echo "<LI> $item->nom_formation | "; 
     echo "$item->intitule_session | "; 
     echo "du : $item->session_du | "; 
     echo "au : $item->session_au<br /><br />"; 
     echo "</LI>"; 
    } 
    echo "</OL></div>"; 

回答

0

要转换的日期到另一种语言,你可以这样做:

setlocale(LC_TIME, 'fr_FR'); 
// with $item->session_du = "2016-01-11 23:00:00" 
print strftime('du : %A %d %B %Y', strtotime($item->session_du)); 

将输出:

lundi 11 janvier 2016 

的strtotime()需要一个日期字符串并返回一个时间戳,strftime()采用该时间戳并应用格式,返回一个基于setloca的字符串le()配置。

更多细节,在这里: http://php.net/manual/en/function.setlocale.php

+0

嗨CJ尼姆,感谢您的回复。我意识到strftime函数,我只是不知道如何把它放在我的上面的查询代码中。如果你能告诉我如何,因为我卡住了,我将不胜感激。 – marcq

+0

只需在脚本开始处添加setlocale(),并在相应的回声中添加strftime()。如果这对您有用,请将答案标记为已接受! :) –

+0

我尝试了几种方法将它添加到echo字符串中,但它不起作用。最后的测试是:echo“au:strftime('%A%d%B%Y',strtotime($ item-> session_du))|”;如果你知道如何去做,那么请问你怎么做? – marcq

0

由于您使用面向对象的计算策略你真的应该使用DateTime类和IntlDateFormatter

只要使用它之前声明的任何日期,您都可以使用相同的格式化程序。

$formatter = new IntlDateFormatter('fr_FR', IntlDateFormatter::LONG, IntlDateFormatter::LONG); 

$dt = new DateTime($item->session_du); 
echo "du : {$formatter->format($dt)} | ";