PHP日期,国际月份名称?

7
可能重复:

strtotime与不同语言?
链接1
获取本地化月份列表

我从数据库中获取日期时间并格式化如下:

$row['datetime'] = date('jS F Y',strtotime($row['datetime']));

这将以格式放置:

28th March 2012

如何本地化月份名称,以便为法语用户显示“Mars”而不是“March”?
谢谢。
2个回答

8
使用setlocalestrftime函数可以得到本地化的日期字符串。
以下是来自PHP文档的示例:http://php.net/manual/en/function.setlocale.php
/* Set locale to Dutch */
setlocale(LC_ALL, 'nl_NL');

/* Output: vrijdag 22 december 1978 */
echo strftime("%A %e %B %Y", mktime(0, 0, 0, 12, 22, 1978));

/* try different possible locale names for german as of PHP 4.3.0 */
$loc_de = setlocale(LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');
echo "Preferred locale for german on this system is '$loc_de'";

4
请注意,setlocale函数设定的是进程范围的地区设置(在使用多线程时可能会导致意外行为)。线程安全的替代方案是使用IntlDateFormatter类。 - Matmarbon

1

简单易用,使用strftimesetlocale

setlocale(LC_ALL, 'fr_FR.utf-8'); // ou LC_TIME
echo strftime('%A');
"lundi"

如果你期待输出unicode,请使用utf-8版本,否则正常版本将给您iso-8859-1(5)。

对于社区中其他人来说,strftime会尊重设置的语言环境,并使用glibc(在后台)。如果date始终返回英文,则strftime将尊重setlocale并为您提供所需的语言输出。


19
Certainly, I can provide Chinese translations for you. However, as this is an English site, I will need your request to be in English. Please provide me with the content that needs to be translated. - Naftali
请原谅我的粗话,这太诱人了。 - greut
这段代码不起作用,只是以数字形式显示,setlocale(LC_ALL, 'fr_FR.utf-8'); $row['datetime'] = strftime($row['datetime']); - beans

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