<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 :(得分: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构造函数的最后一个参数)