PHP日期函数输出用意大利语

Sha*_*sri 16 php date

我正在尝试使用date()以下格式输出意大利语格式的日期:

<?php 
    setlocale(LC_ALL, 'it_IT');
    echo date("D d M Y", $row['eventtime']); 
?>
Run Code Online (Sandbox Code Playgroud)

但是,它仍以英文格式出现.我还能做什么?有什么不对?

解决方案必须是特定于脚本的,而不是服务器范围的......

谢谢

沙迪

Ste*_*rig 40

date()不是语言环境.您应该使用strftime()及其格式说明符输出语言环境感知日期(来自date()PHP手册):

要格式化其他语言的日期,您应该使用setlocale()strftime()函数而不是 date().

关于Anti Veeranna的评论:他是完全正确的,因为你必须非常小心设置语言环境,因为它们有时不限于当前的脚本范围.最好的方法是:

$oldLocale = setlocale(LC_TIME, 'it_IT');
echo utf8_encode( strftime("%a %d %b %Y", $row['eventtime']) );
setlocale(LC_TIME, $oldLocale);
Run Code Online (Sandbox Code Playgroud)

  • 请记住,setlocale不是特定于脚本的,它是特定于线程的,因此区域设置可能会在您下面"更改".http://ee.php.net/setlocale也解释了这一点. (3认同)

Sim*_*amp 9

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

$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()); 
Run Code Online (Sandbox Code Playgroud)

如果它不起作用,您可能需要:

  • 安装intlphp 扩展(ubuntu 示例):sudo apt-get install php5-intl

  • 安装您要使用的语言环境: sudo locale-gen it_IT