在 php 中更改日期的语言

2022-08-31 00:46:16

我有这个MySQL查询,它返回两个日期(两个日期的格式都格式化为a-m-Y)。现在我想把这个日期翻译成我自己的语言(丹麦语)。我该怎么做。我已经尝试了setlocale()和strftime()函数,但它不起作用。我知道这是一个非常基本的问题,但我真的需要帮助:)多谢!


答案 1

使用和一起使用:setlocalestrftime

setlocale(LC_TIME, array('da_DA.UTF-8','da_DA@euro','da_DA','danish'));
echo strftime("%A"); // outputs 'tirsdag'

适用于我在Windows上的php安装。

strftime(): 警告!此函数自 PHP 8.1.0 起已弃用。强烈建议不要依赖此功能。


答案 2

我发现这不可靠,因为它是按进程设置的,而不是按线程设置的(手册中提到了这一点)。这意味着其他正在运行的脚本可以随时更改区域设置。一个解决方案是使用php扩展中的IntlDateFormattersetlocaleintl

  • Install if necesarry (ubuntu):intlsudo apt-get install php5-intl

  • 安装您要使用的区域设置(我以意大利语为例):sudo locale-gen it_IT

  • 生成本地格式的日期:

$fmt = new \IntlDateFormatter('it_IT', NULL, NULL);
$fmt->setPattern('d MMMM yyyy HH:mm'); 
// See: http://userguide.icu-project.org/formatparse/datetime for pattern syntax
echo $fmt->format(new \DateTime()); 
// Output: 6 gennaio 2016 12:10

推荐