【问题标题】:formatting date from long format to short in portuguese在葡萄牙语中将日期从长格式格式化为短格式
【发布时间】:2018-11-26 00:59:13
【问题描述】:

我有一个用葡萄牙语写的日期,比如“2018 年 11 月 24 日” 此日期相当于“2018 年 11 月 24 日” 我想同时获得日期和月份数字,所以它呼应了我

24 和 11 我已经尝试过了,它给了我 31/12/1969 ????

setlocale(LC_TIME, 'pt_BR', 'pt_BR.utf-8', 'pt_BR.utf-8', 'portuguese');
date_default_timezone_set('America/Sao_Paulo');    
echo date("d/m/Y",strtotime($date));

【问题讨论】:

  • "strtotime — 将任何英文文本日期时间描述解析为 Unix 时间戳"

标签: php date format


【解决方案1】:
echo date("d/m/Y", strtotime("24 november 2018"));

否则它会在您的日期返回 false 并带您回到(机器)时间的开始 :)

【讨论】:

    【解决方案2】:

    由于日期是用英语解析的,我不得不剪断字符串并切换大小写。结果如下:

            $strArray = explode(' ', '24 de novembro de 2018');
            $post_day = $strArray[0];
            $post_month = $strArray[2];
    
            switch ($post_month){
    
        case "janeiro": $post_month = "January" ; break;
        case "fevereiro": $post_month = "February"; break;
        case "março": $post_month = "March" ; break;
        case "abril": $post_month = "April"; break;
        case "maio": $post_month = "May"; break;
        case "junho": $post_month = "June"; break;
        case "julho": $post_month = "July"; break;
        case "agosto": $post_month = "August"; break;
        case "setembro": $post_month = "September"; break;
        case "outubro": $post_month = "October"; break;
        case "novembro": $post_month = "November"; break;
        case "dezembro": $post_month = "December"; break;
    
            }           
    
            $post_month = date_parse($post_month);
            $post_month = $post_month['month'];
    

    【讨论】:

      【解决方案3】:

      试试这个:我希望它会帮助你。

      $date="24 de novembro de 2018";
      setlocale(LC_TIME, 'pt_BR', 'pt_BR.utf-8', 'pt_BR.utf-8', 'portuguese');
      date_default_timezone_set('America/Sao_Paulo');    
      echo date("Y-F-d",strtotime($date));
      

      【讨论】:

        【解决方案4】:

        使用 strftime() 代替 date()

        要获得不同语言格式的日期,您必须在 PHP 中使用 strftime() 和 setlocale() 函数,而不是 date(),后者总是返回英文日期。

        来自 PHP.net 文档

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

        https://www.php.net/manual/en/function.date.php

        示例

        setlocale(LC_ALL, 'pt_BR');
        echo strftime("%d de %B de %Y"); //  08 de fevereiro de 2021
        

        Linux 找不到您的语言环境

        如果你是 Linux 服务器,不要显示带有定义 setlocale() 的 strftime(),也许你需要安装 locale 包:

        检查当前安装的语言:

        locale -a
        

        安装pt语言包

        apt-get install language-pack-pt 
        dpkg-reconfigure locales
        

        (选择您需要的语言环境)

        重启 apache

        apache2ctl restart
        

        参考: https://www.vextenso.com.br/blog/87/php-setlocale-linux-pt_BR-locale-nao-funciona.html

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-01-07
          • 1970-01-01
          • 1970-01-01
          • 2022-06-27
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多