使用Carbon,如何通过提供数字来获取翻译后的日期名称? (在当前语言环境中)
假设我有第一天,我想用英语表示星期一,用西班牙语表示 Lunes,用德语表示 Montag 等等。
并且只有使用 Carbon,我才不想使用翻译日期的数组。
我尝试了 Carbon::getDays() 方法,它返回日期名称数组,但不幸的是,只有英文。
如果获取日期名称是您唯一关心的问题,您可以使用数组来完成此操作。
$weekdays = Carbon::getDays();
但是,如果您需要一种方法来获取区域设置的名称,有两种方法可以实现。
Carbon::create($weekdays[$day])->locale($locale)->dayName;
// Carbon::create($weekdays[1])->locale('fr_FR')->dayName outputs 'lundi'
// Carbon::create($weekdays[1])->locale('es_ES')->dayName outputs 'lunes'
// Carbon::create($weekdays[1])->locale('en_US')->dayName outputs 'monday'
或者,找到以星期一开始的一年,您可以避免制作工作日数组。但是,请务必说明您选择该特定年份的原因。
Carbon::setLocale('es');
尝试这个,对于西班牙语或 de 对于德语等等,
这并不漂亮 - 但这很有效:
Carbon::now()->year(2018)->dayOfYear(1)->locale('de')->dayName
编辑:
Carbon::now()->year(2019)->dayOfYear(0)->locale('de')->dayName
此版本将使用应用程序区域设置返回本地化的日期名称。
collect(Carbon::getDays())->map(fn($dayName) => ucfirst(Carbon::create($dayName)->dayName));