首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Laravel本地化日期格式

用Laravel本地化日期格式
EN

Stack Overflow用户
提问于 2016-06-16 21:07:41
回答 2查看 2.6K关注 0票数 0

我正在使用Laravel5.2与碳,我试图获得日期的地方格式。我的意思是,如果我在数据库中有日期2015-12-31,我希望它被打印出来,因为12/31/201531/12/2015取决于用户区域设置。

User模型中,我有一个属性locale,它显示用户区域设置。但我不知道该由谁来做。我知道拉勒维尔使用碳作为日期,但在碳类中,我看到Y-m-d格式是硬编码的。

我仍然需要将日期保存为Y-m-d格式,并且只有演示文稿将取决于User->locale属性。

那么,我如何才能实现这种行为呢?有什么办法来解决碳本身的问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-16 22:56:42

有一种方法可以使用Carbon来实现这一点,但是它似乎真的会根据您服务器的规格和其他什么而有所不同。从阅读上看,地区包似乎并不总是一致的。使用生产服务器终端上的locale -a检查已安装的受支持的区域设置。如果您需要安装一个,请使用sudo locale-gen <NEW LOCALE>

但是,一旦你整理好你的地区字符串,你似乎可以说

代码语言:javascript
运行
复制
$date = new Carbon;

setlocale('en_GB');

echo $date->formatLocalized('%x'); // '16/06/16'

我从%x函数派生出strftime()修饰符,根据php手册,它指定格式为“基于区域设置的首选日期表示形式,没有时间”。

票数 0
EN

Stack Overflow用户

发布于 2016-06-17 04:13:23

我有解决办法给你。

覆盖模型中的getAttribute方法

代码语言:javascript
运行
复制
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    use DateFormatting;

    protected $dates = [
        'finished_at',
        // other field names that you need to format
    ];

    public function getAttribute($key)
    {
        if ( array_key_exists( $key, $this->getDates() ) ) {
           // here you can format your date
        }
        return parent::getAttribute($key);
    }

}

毕竟,您可以像往常一样访问这些字段(使用神奇的__get())。

代码语言:javascript
运行
复制
$model->finished_at;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37869356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档