2016-01-02 198 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)} | ";