在PHP中用另一种语言表示不是今天的日期或月份的名称

3
我正在尝试在php中获取一种语言环境下的日期名称,而不是英语。我将区域设置更改为 setlocale(LC_ALL, 'nl_NL');(返回true),但日期仍然以英语显示。然后我发现应该使用strftime(),但它只返回设置语言环境下的当前时间,而我想循环预定义的一些日期,所以输出结果应该是:

星期五 8月30日

星期六 8月31日

星期天 9月1日

从当前时间戳中减去/添加天数也不是我想要做的事情。

1
小心使用 LC_ALL,你需要的是 LC_TIME。此外,这个问题之前已经被问过了。链接 - Elias Van Ootegem
尝试像 setlocale(LC_ALL,'dutch'); 这样。这对我有效。但是 nl_NL 不起作用。 - Bora
3个回答

3
每当您需要基于本地进行日期/时间戳操作时,应使用strftime。
同时将编码更改为utf-8。

http://php.net/manual/en/function.strftime.php

例子:
<?php
header('Content-Type: text/html; charset=UTF-8');

$myDate = "Feb 21, 2013";

$locale = 'fr_FR.utf8';
setlocale(LC_ALL, $locale);
echo strftime('%d %B %Y', strtotime($myDate));  

$locale = 'en_US.utf8';
setlocale(LC_ALL, $locale);
echo strftime('%d %B %Y', strtotime($myDate));
?>

1

strftime 在 PHP 8.1 中已被弃用。

您可以使用 IntlDateFormatter

$formatter = new \IntlDateFormatter(
    'nl_NL',
    \IntlDateFormatter::LONG,
    \IntlDateFormatter::LONG,
    'Europe/Amsterdam' //more in: https://www.php.net/manual/en/timezones.europe.php
);

echo $formatter->formatObject(new \DateTime(), "eeee dd MMMM", "nl_NL");

结果:

9月21日星期三

  • 请注意,“eeee”是来自ICU的格式。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接