使用 Carbon 翻译 Laravel 日期

问题描述 投票:0回答:3

希望你一切都好!

我有一个问题,我有很多问题,在我的 Laravel 应用程序中,我在所有地方都使用 Carbon 来记录日期,因为我没有使用 created_at 来调用日期,我使用不同的行,在这种情况下,该行在我的控制器中调用 event_date_start ,当创建新事件时,日期将以这种格式保存 m/d/Y h : 我是

所以,请求是这样的:

$event->event_date_start = Carbon::parse($request->event_date_start)->format('m/d/Y h:i a');

在这一步之前一切都很好,问题是当我在刀片上调用该行时,因为给我英文记录,例如“January”,但我需要“Enero

我创建了一个开关,还使用了来自 GitHub 的包,并且还创建了一个特征,但所有这些都只适用于“created_at”和“updated_at”行

如果有人可以帮助我,我将非常感激!

php laravel date php-carbon
3个回答
5
投票

使用translatedFormat()而不是format()

 $event->event_date_start = Carbon::parse($request->event_date_start)->translatedFormat('m/d/Y h:i a');

2
投票

您可以通过添加以下行来告诉 Carbon 使用某种语言:

Carbon::setLocale('es');

参见:http://carbon.nesbot.com/docs/(本地化部分)


0
投票

您是否尝试过将

event_date_start
放入模型的
$dates
属性中?如果没有,您可以通过在模型中创建一个名为
protected
$dates
属性来实现。

protected $dates = ['event_date_start'];

默认情况下,Laravel 会在

Carbon
实例中转换模型的
created_at
updated_at 属性,所以我认为,当 Laravel 转换它时,它会使用 configs 作为应用程序中的日期(例如,假设您已将 Laravel 应用程序配置为以 西班牙语)显示日期。

通过我的建议,我希望并且相信 Laravel 也会对属性做同样

event_date_start
。此外,通过这样做,您不必将日期解析为 Carbon 实例即可将其保存在模型中。

我相信这样就可以了。

$event->event_date_start = $request->event_date_start;

如果您对格式有任何限制,您可以在模型中添加另一个名为

dateFormat
的属性。

protected $dateFormat = 'm/d/Y h:i a';

希望对您有帮助。

参考:https://laravel.com/docs/5.5/eloquent-mutators#date-mutators

© www.soinside.com 2019 - 2024. All rights reserved.