如何更改日期语言?

时间:2014-09-29 13:49:49

标签: php html mysql date

<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>

好的我修改了代码以显示所有内容并插入了建议,现在它工作得很好!!完美

干杯 克里斯

2 个答案:

答案 0 :(得分: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
旁白:正如弗雷德在评论中所说,这只是一个片段,因为你的标记有点不对(缺少标签等,而且很可能是在循环内)。

答案 1 :(得分:0)

有点晚但我更喜欢使用IntlDateFormatter,它是系统区域独立的,输出保证是UTF-8:

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

(参见ICU的a custom format文档 - IntlDateFormatter构造函数的最后一个参数)