【问题标题】:Change the language for date in php在php中更改日期的语言
【发布时间】:2011-08-02 10:53:34
【问题描述】:

我有这个 MySQL 查询,它返回两个日期(都被格式化为 a-m-Y)。现在我想把这个日期翻译成我自己的语言(丹麦语)。我怎样才能做到这一点。 我已经尝试了 setlocale() 和 strftime() 函数,但它不起作用。 我知道这是一个非常基本的问题,但我真的需要帮助 :) 非常感谢!

【问题讨论】:

    标签: php date


    【解决方案1】:

    我发现setlocale 不可靠,因为它是按进程设置的,而不是按线程设置的(手册中提到了这一点)。这意味着其他正在运行的脚本可以随时更改语言环境。一个解决方案是使用intl php 扩展中的IntlDateFormatter

    • 如果需要,安装 intl (ubuntu):sudo apt-get install php5-intl

    • 安装你要使用的语言环境(我以意大利语为例):sudo locale-gen it_IT

    • 生成本地格式化的日期:

    $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()); 
    // Output: 6 gennaio 2016 12:10
    

    【讨论】:

    • 这是最好的答案,因为它不会改变全局语言环境。
    【解决方案2】:

    使用

    http://php.net/manual/en/function.strftime.php

    <?php
    setlocale(LC_ALL, 'da_DA');
    
    echo strftime("%A %e %B %Y");
    ?>
    

    【讨论】:

      【解决方案3】:

      我认为date() 功能对你来说还不够进化,在这里。

      相反,我建议您查看IntlDateFormatter1(引用)

      Date Formatter 是一个具体的类,它使 依赖于语言环境 格式化/使用模式字符串和/或罐装日期解析 模式。

      IntlDateFormatter::format() 的手册页上有几个示例,该方法用于通过设置所需的语言环境以两种不同的语言显示日期。


      1.与 PHP >= 5.3 捆绑

      【讨论】:

      • 看起来有点复杂 :D 好的,我来看看。我不明白仅仅改变语言就这么难:)
      • 嗯,你必须拥有能够以正确的语言生成字符串的“东西”——这意味着知道单词、它们的顺序……这不是一件容易的事。
      【解决方案4】:

      如果您想要挪威日期和月份格式,这肯定适合您

      $date = '2016-11-16 05:35:14';
      setlocale(LC_TIME, array('nb_NO.UTF-8','nb_NO@norw','nb_NO','norwegian'));
      echo strftime("%e %b %Y",strtotime($date));
      

      如果您想获得其他语言区域设置 ID,例如 nb_NO,请参考此网站 International Components for Unicode (ICU) Data

      【讨论】:

        【解决方案5】:

        同时使用setlocalestrftime

        setlocale(LC_TIME, array('da_DA.UTF-8','da_DA@euro','da_DA','danish'));
        echo strftime("%A"); // outputs 'tirsdag'
        

        适用于我在 Windows 上的 php 安装。

        【讨论】:

        • 但是我可以用那个方法输出变量吗?
        • 什么意思?你要输出什么变量?
        • 我将查询中的日期数据存储在变量中。我不想输出当前日期...
        • 为了存储日期/时间,我会在您的数据库设计中使用适当的数据类型(如时间戳或日期时间)。但是,您当然可以将strftime 的返回值存储在一个变量中:$date = strftime("%A");
        • 是的,你可以 Emil 只需将你的变量作为第二个参数传递:strftime("%A", $yourdate);
        【解决方案6】:

        如果您尝试转换 datetime,请尝试以下操作:

        $fecha = $dateConsulta->format('d-M-Y');  
        $fecha = str_replace('Jan','Ene',$fecha);
        $fecha = str_replace('Apr','Abr',$fecha);
        $fecha = str_replace('Aug','Ago',$fecha);
        $fecha = str_replace('Dec','Dic',$fecha);
        

        【讨论】:

          猜你喜欢
          • 2015-08-17
          • 2018-08-10
          • 1970-01-01
          • 2015-11-12
          • 1970-01-01
          • 2023-04-08
          • 2018-08-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多