Php 什么';在Laravel上定位日期的最佳方式是什么?
举个例子:Php 什么';在Laravel上定位日期的最佳方式是什么?,php,laravel,Php,Laravel,举个例子: {{ $article->created_at->format('M') }} 它返回Nov。我需要将其本地化为我的语言,因此输出应该是Kas 考虑执行以下操作: {{ trans("language.{$article->created_at->format('M')}") }} app/lang/tr/language.php -> 'nov' => 'kas' 这看起来像是重新发明轮子,在编程上相当糟糕。我肯定有一些本地化标准。比如:
{{ $article->created_at->format('M') }}
它返回Nov
。我需要将其本地化为我的语言,因此输出应该是Kas
考虑执行以下操作:
{{ trans("language.{$article->created_at->format('M')}") }}
app/lang/tr/language.php -> 'nov' => 'kas'
这看起来像是重新发明轮子,在编程上相当糟糕。我肯定有一些本地化标准。比如:
{{ $article->created_at->format('M')->localiseTo('tr_TR') }}
实现这一目标的最佳方法是什么?我想你应该参考手册页。虽然我不确定Laravel是否有包装纸。当你在Laravel中检索模型的日期时,你会得到一个碳物体: 如果您参考Carbon文档,它会告诉您如何获取区域设置格式的日期: 不幸的是,基类DateTime没有任何本地化 支持。要开始本地化,请支持formatLocalized($format) 方法已添加。实现调用strftime 使用当前实例时间戳。如果您首先设置当前 使用setlocale()设置区域设置,则返回的字符串将在 正确的区域设置
因此,基本上,只需使用
formatLocalized('M')
而不是format('M')
将库用作Laravel日期,您只需在Laravel应用程序配置文件中设置应用程序的语言,并使用其函数按需格式化日期
在/app/config/app.php中设置语言
'locale' => 'es',
我发现这个图书馆非常有用而且干净。要使用它,可以在库自述文件中编写类似于示例的内容。我用西班牙语留下结果
echo Date::now()->format('l j F Y H:i:s'); // domingo 28 abril 2013 21:58:16
echo Date::parse('-1 day')->diffForHumans(); // 1 día atrás
这是指向存储库的链接:
要安装此库,您可以按照以下链接中详细说明进行操作:
在使用Carbon-date实例时,为每个请求(例如filters.php)全局设置语言环境也是一个好主意
App::before(function($request) {
setlocale(LC_TIME, 'sk_SK.utf8');
});
然后照常进行
$dt->formatLocalized('%b'); // $dt is carbon instance
请参阅格式选项和区域设置列表。除了公认的答案,我正在寻找一种在Blade中使用此选项的方法,例如使用created_at的Carbon实例。接受答案中的类似乎不接受Carbon实例作为日期,而是从字符串中解析日期 我编写了一个小助手函数来缩短刀片模板中的代码:
function localeDate($date, $format)
{
return Jenssegers\Date\Date::createFromFormat('d-m-Y H:i:s', $date->format('d-m-Y H:i:s'))->format($format);
}
在Blade中,您现在可以使用:
{{ localeDate($model->created_at, 'F') }}
它将返回config/app.php中设置的区域设置中月份的完整书面名称
'locale' => 'es',
如果有更好的方法(或者我在代码中遗漏了什么),请告诉我。否则,这可能对其他人有帮助。转到应用程序->配置->App.php 放
'timezone' => 'Asia/Kolkata',
使用简单的
{{$post->created_at->diffForHumans()}
所以这更多的是关于日期格式而不是时区问题,对吗?也许这会有帮助:“调用未定义的方法”您使用的是Laravel版本4吗?是的。绑定到$created_at的碳模型没有一个称为“formatLocalized”的方法。它可能是在新版本中添加的?尝试从根目录进行composer更新。如果我查看Carbon类文件,我会看到第778行定义的formatLocalized
方法。该文件位于/vendor/nesbot/carbon/src/carbon/carbon.php
我刚刚发布了composer update,但没有任何更改。我的碳路径是:vendor/nesbot/carbon/carbon/carbon.php
,它不包含这样的方法。我问这个问题已经有一段时间了。这就是我采用的解决方案。我还必须自己扩展Date类以提供更多的功能特性代码>。我喜欢这个答案。但是,您需要注意,要使用的语言环境实际上安装在服务器时区上,与本地化没有任何关系。