我正在尝试使用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不可靠,因为它是按进程设置的,而不是按线程设置的(手册中提到了这一点)。这意味着其他正在运行的脚本可以随时更改区域设置。的溶液使用IntlDateFormatter从intlphp扩展。
$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
| 归档时间: |
|
| 查看次数: |
41238 次 |
| 最近记录: |