PHP星期几数字到星期几文本不是英语

时间:2012-12-21 10:18:16

标签: php codeigniter date setlocale

我尝试在Windows上使用setlocale()函数来转换其他语言的天名,但它不起作用。

<?php setlocale(LC_ALL, 'nl_NL'); 
echo date("l", strtotime($variable); ?>

有没有人可以选择setlocale()?我使用Codeigniter框架。

5 个答案:

答案 0 :(得分:5)

您应该考虑使用包含intl

的扩展程序IntlDateFormatter

来自documentation

$fmt = new IntlDateFormatter( "en_US" ,IntlDateFormatter::FULL,IntlDateFormatter::FULL,'America/Los_Angeles',IntlDateFormatter::GREGORIAN  );
echo "First Formatted output is ".$fmt->format(0);
$fmt = new IntlDateFormatter( "de-DE" ,IntlDateFormatter::FULL,IntlDateFormatter::FULL,'America/Los_Angeles',IntlDateFormatter::GREGORIAN  );
echo "Second Formatted output is ".$fmt->format(0);

输出

First Formatted output is Wednesday, December 31, 1969 4:00:00 PM PT
Second Formatted output is Mittwoch, 31. Dezember 1969 16:00 Uhr GMT-08:00

答案 1 :(得分:4)

nl_NL是典型的Unix样式区域设置名称。在Windows上,语言环境遵循different format。你想要"nld", "holland", or "netherlands"

此外,date()不支持区域设置。您可能需要strftime()

答案 2 :(得分:2)

date不会根据区域设置格式化日期。 strftime确实如此。

答案 3 :(得分:0)

setlocale(LC_ALL, 'german');
echo (iconv('ISO-8859-2', 'UTF-8', strftime('%Y. %B %d. (%A)', mktime('0', '0', '0', '6', '18', '2010'))));

setlocale(LC_ALL, 'hungarian');
echo (iconv('ISO-8859-2', 'UTF-8', strftime('%Y. %B %d. (%A)', mktime('0', '0', '0', '6', '18', '2010'))));

答案 4 :(得分:0)

您可以将strftime用于本地日期:

setlocale(LC_TIME, 'it_IT');
$timestamp = strtotime("31-12-2012");
echo strftime("%A", $timestamp);