我想设置Laravel和Carbon,以便根据用户选择的当前语言环境,以正确的格式设置日期格式。我认为在所需的语言环境上设置LC_TIME,然后使用Carbon方法toDateString来获取正确的格式就足够了,但是,不管LC_TIME设置如何,它始终以yyyy-mm-dd格式返回日期字符串。
预期结果:-如果选择意大利语,则mm / dd / yyyy-如果选择了英语,则yyyy-mm-dd-依此类推
我正在使用Laravel 5.5和Carbon 1.36.1
最近,我在一个旧的Laravel应用程序中遇到了同样的问题,我们通过将本地化日期的格式存储在单独的语言文件中来解决了这个问题:
resources/lang/en/dates.php
return [
'full' => 'Y-m-d'
];
resources/lang/it/dates.php
return [
'full' => 'm/d/Y'
];
格式化日期时,只需使用config()
帮助程序来获取为config/app.php
中设置的语言提供的格式,使用$date->format(config('dates.full'))
,它将返回正确的本地化日期。
如果您愿意,也可以使用macro(在1.26.0中添加),以简化此过程:
Carbon::macro('localisedFormat', function ($key) {
return $this->format(config("dates.{$key}"));
});
并通过]访问>
$date->localisedFormat('full');