我正在使用以下功能来检索日期和时间:
function formatEventTime($time, $type, $locale = 'nb_NO') {
setlocale(LC_TIME, $locale);
switch($type) {
case 'date' : $format = '%d.%m'; break;
case 'dm' : $format = '%d. %B'; break;
case 'time' : $format = '%H:%M'; break;
case 'dmy' : $format = '%d.%m.%Y'; break;
}
return strftime($format, strtotime($time));
}
wher $time = 2010-12-03 10:00:00
。
问题是我的日子和月份仍然是英文。如何将其更改为例如挪威?
更新
这适用于我的服务器,但不适用于我的语言环境机器。
答案 0 :(得分:7)
示例:
<?php
$df = new IntlDateFormatter('nb_NO',
IntlDateFormatter::FULL, IntlDateFormatter::FULL,
'Europe/Oslo');
echo $df->format(time());
给出:
torsdag 16. september 2010 kl. 21.23.03 Norge
答案 1 :(得分:6)
您必须使用strftime()
而不是date()。
如果没有给出时间戳,则返回使用给定时间戳或当前本地时间格式化的字符串。月份和工作日名称以及其他依赖于语言的字符串遵循使用setlocale()设置的当前语言环境。
答案 2 :(得分:5)
我知道这个话题很老但我今天遇到了同样的问题。日期在我的linux机器上正确显示,但在我的Windows机器上它们仍然是英文版。
如果你想让它在linux和windows机器上工作,你必须小心使用setlocale()函数。在linux上你必须使用'nb_NO'(例如)用于挪威语格式,在windows上你必须使用'norwegian':
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
setlocale(LC_ALL, 'norwegian');
} else {
setlocale(LC_ALL, 'nb_NO');
}
您可以在MSDN中找到适用于Windows的语言代码列表。