【问题标题】:How to get PHP to use internationalised dates?如何让 PHP 使用国际化日期?
【发布时间】:2011-04-13 16:25:00
【问题描述】:

我正在尝试让 PHP 日期跨语言工作。语言代码将根据登录用户的语言设置提供。

我认为我可以这样做:

setlocale(LC_ALL, 'de_DE.UTF-8');
echo strftime('%A %B %Y');

但是输出是:

Wednesday April 2011

而我本来期望的:

Mittwoch April 2011

(英语和德语的四月是一样的)

这不是使用strftime 函数的正确方法吗?如果没有,是否有替代方法?

【问题讨论】:

    标签: php date internationalization


    【解决方案1】:

    您可以使用IntlDateFormatter(PHP >= 5.3)


    引用IntlDateFormatter::format()手册页上给出的示例:

    $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
    

    【讨论】:

    • 更具体(也更简单):\IntlDateFormatter::create('de_DE', \IntlDateFormatter::FULL, \IntlDateFormatter::NONE)->format(\time())
    【解决方案2】:

    setlocale() 返回一个值,可以为 FALSE:

    返回新的当前语言环境,或 如果语言环境功能是 FALSE 未在您的平台上实施, 指定的语言环境不存在或 类别名称无效。

    所以你需要检查返回值。

    请注意,语言环境名称因平台而异,de_DE.UTF-8 看起来像一个典型的 Unix 名称。它是 Unix 服务器吗?如果是这样,请确保计算机确实安装了此类语言环境。

    【讨论】:

      【解决方案3】:

      您似乎遗漏了一些代码。答案在这里:
      http://php.net/manual/en/function.setlocale.php

      /* 从 PHP 4.3.0 起尝试不同的德语语言环境名称 */ $loc_de = setlocale(LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge'); echo "此系统上德语的首选语言环境是 '$loc_de'";

      ?>

      【讨论】:

        【解决方案4】:

        根据手册,您对 strftime() 的使用似乎是正确的。我会质疑你的 setLocale() 设置。

        请在另一个论坛上查看here,了解与您的问题非常相似的问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-15
          • 2018-11-26
          • 1970-01-01
          • 1970-01-01
          • 2011-10-15
          • 1970-01-01
          相关资源
          最近更新 更多