如何从created_at字段提取月份并显示为巴西葡萄牙语?
解决方法:将月份显示为巴西葡萄牙语
没问题!要把你的日期月份改成巴西葡萄牙语的「JANEIRO」这类格式,这里有两种实用方案,你可以根据自己的服务器环境选择:
方案一:使用PHP本地化函数(推荐,适合服务器支持locale的情况)
PHP的date()函数本身不支持本地化输出,所以我们需要用setlocale()配合strftime()来实现:
- 首先确保你的服务器安装了巴西葡萄牙语的locale包(Linux下通常是
pt_BR.UTF-8,Windows下是Portuguese_Brazil.1252或ptb)。 - 修改你的视图代码如下:
<span> <?php // 设置巴西葡萄牙语区域,多写几个备选兼容不同服务器系统 setlocale(LC_TIME, 'pt_BR.UTF-8', 'pt_BR', 'Portuguese_Brazil.1252', 'ptb'); // strftime("%B") 会输出本地化的完整月份名称 echo strftime("%B", strtotime($item->created_at)) . ' de ' . date("Y", strtotime($item->created_at)); ?> </span>
这样运行后,就能得到JANEIRO de 2023的结果啦。
方案二:手动定义月份数组(稳妥,不受服务器locale限制)
如果你的服务器没法安装对应的locale包,或者担心兼容性问题,可以直接手动映射巴西葡萄牙语的月份:
<span> <?php // 定义巴西葡萄牙语月份数组,索引对应1-12的月份数字 $br_months = [ 1 => 'JANEIRO', 2 => 'FEVEREIRO', 3 => 'MARÇO', 4 => 'ABRIL', 5 => 'MAIO', 6 => 'JUNHO', 7 => 'JULHO', 8 => 'AGOSTO', 9 => 'SETEMBRO', 10 => 'OUTUBRO', 11 => 'NOVEMBRO', 12 => 'DEZEMBRO' ]; // 获取月份数字(1-12) $month_number = date("n", strtotime($item->created_at)); // 输出对应月份和年份 echo $br_months[$month_number] . ' de ' . date("Y", strtotime($item->created_at)); ?> </span>
这个方法完全不依赖服务器的locale设置,直接手动匹配,结果肯定符合你的需求。
内容的提问来源于stack exchange,提问作者Itamar Campos
相关产品推荐
相关产品推荐

