2014-09-29 3 views
1
<table class="projects"> 
    <tr><td class="title" colspan="2">Vergangene Projekte</td></tr> 

<?php $query = "SELECT * FROM posts WHERE project = 1 && project_date <= CAST(CURRENT_TIMESTAMP AS DATE)ORDER BY date DESC"; 
     if(!$query){ 
     die("Konnte nicht mit Data Base verbinden");} 
     $result = mysqli_query($connection, $query); 

while($row = mysqli_fetch_array($result)){ 

     setlocale(LC_ALL, 'de_DE'); // using german language works 
     $premier = new DateTime($row['project_date']); 
     echo "<tr><td>" .strftime("%B", $premier->getTimestamp()). "</td><td class=\"project_title\"> 
     <a class=\"title\" href=\"projekt_info.php?projekt=" .urlencode($row["id"]) ."\">" 
     .$row['title']. "</a></td></tr>";} 
?> 
</table> 

좋아요. 코드를 수정하고 제안 사항을 삽입하도록 코드를 수정했습니다. 이제는 잘 작동합니다! 완벽한날짜 언어를 변경하는 방법?

건배 크리스

+0

'setlocale (LC_TIME, 'fr_FR');을 추가 해 주실 수 있습니까? –

+0

플러스가 전체 코드입니까? 그렇다면 상당 부분 누락 된 부분이 있습니다. 테이블 태그, 예를 들어 데이터 가져 오기. –

+0

그리고'fr_FR' 로케일이 실제로 컴퓨터에 설치되어 있는지 확인하십시오. 'locale -a' – Ghost

답변

3

우선은 참으로 fr_FR 사용하는 스크립트의 시스템에 설치되어 있는지 확인합니다.

터미널에 locale -a을 사용해 확인하십시오.

둘째, DateTime은 영어로만 작동하므로 strftime()을 사용하고 타임 스탬프없이 사용하고 있습니다.

setlocale(LC_ALL, 'fr_FR'); 
$premier = new DateTime($row['project_date']); 
echo "<tr><td>" .strftime("%B", $premier->getTimestamp()). "</td><tr>"; 
            // ^^ feed the timestamp 

(!) 참고는 : 프레드 코멘트에 말했듯이 마크 업이 조금 꺼져 (등 태그를 누락이 가장 가능성이 루프 내부에) 때문에, 이것은 단지 조각이다.

0

약간 늦게하지만 UTF-8로 보장 시스템 로케일 독립적 인 출력되는 IntlDateFormatter을 사용하여 선호 :

$datefmt = new IntlDateFormatter('de_DE', NULL, NULL, NULL, NULL, 'LLLL'); 
while($row = mysqli_fetch_array($result)) { 
    # ... 
    echo "<tr><td>" . $datefmt->format($premier). "</td>"/*...*/; 
    # ... 

(a custom format에 대한 ICU의 설명서를 참조하십시오 - IntlDateFormatter 생성자의 마지막 인자)

관련 문제