【问题标题】:setlocale() for date()/strftime() language full month name incorrect behavioursetlocale() for date()/strftime() 语言完整月份名称不正确行为
【发布时间】:2018-07-11 21:11:34
【问题描述】:

根据 PHP 文档的 this 部分的 strftime() 函数,在尝试使用其他语言时应该使用

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

setlocale() 使用以下参数时

  setlocale(LC_ALL, "es_ES", 'Spanish_Spain', 'Spanish');

strftime()

  $mes = strftime('%B', strtotime($semana->semana . "+{$diaPos} days"));

以英文返回月份。

我可以采用的一种解决方案是分配一个常量变量,指向翻译与此函数给出的月份,这样我就可以返回正确的名称。

但对我来说似乎不是很优雅。

我在基于 debian 的发行版上使用 PHP7。

【问题讨论】:

    标签: php


    【解决方案1】:

    为了使用区域设置,您需要在系统中生成它。在 debian 上,您应该以 root 身份运行:

    dpkg-reconfigure locales
    

    然后你的脚本应该可以工作了。

    【讨论】:

    • 重启 apache2 服务后,该命令有效。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-22
    • 1970-01-01
    相关资源
    最近更新 更多