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类以提供更多的功能特性。我喜欢这个答案。但是,您需要注意,要使用的语言环境实际上安装在服务器时区上,与本地化没有任何关系。