数据库结果中的Laravel格式日期时间

k4emjkb1  于 2023-03-13  发布在  其他
关注(0)|答案(5)|浏览(219)

我的数据库中存储了两个日期,mysql的DateTime格式为YYYY-MM-DD HH:MM:SS。当我得到这个数据(其他字符串等),我想把它转换成另一种格式,也许DD.MM.YYYY HH:MM:SS,并显示在我的视图中的一个表格单元格。我的数据库日期被称为date_begindate_end
更好的是,当我从数据库中获得这个日期时,将其转换为DD.MM.YYYY,将日期和时间分开,将时间存储在一个自定义字符串(“HH 1:MM 1-HH 2:MM 2”)中,并将两者都显示在我的视图中。
我怎样才能做到这一点呢?我发现一些例子可以在视图上转换,而不是在控制器中,但我认为这对MVC不好。

x6492ojm

x6492ojm1#

不知道您从哪里得到的印象是 “格式化视图中的日期对MVC不好”,因为这不是问题
如果您使用的是Eloquent Models,则可以非常轻松地执行此操作:

**1.**将列添加到模型类的$dates属性中:

protected $dates = ['date_begin', 'date_end'];

这将确保值变为Carbon instances

**2.**在您的视图文件中,您可以使用Carbon提供的format方法,如下所示:

<!-- To use only the date with the given format -->
{{ $item->date_begin->format('Y.m.d') }}

<!-- To use only the time with the given format -->
{{ $item->date_begin->format('H:i:s') }}

<!-- To use both date and time with the given format -->
{{ $item->date_begin->format('Y.m.d H:i:s') }}

不需要将值拆分为时间和日期,只需要使用任何格式显示您想要从DateTime值中得到的内容。
如果您没有使用Eloquent模型,那么您可以手动使用Carbon来格式化您的值,如下所示:

{{ Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $item->date_begin)->format('Y.m.d') }}
vlf7wbxs

vlf7wbxs2#

我使用的PHP解决方案没有Carbon:
按照您的操作获取数据库日期(使用默认格式:YYYY-MM-DD HH:MM:SS),当您在视图上打印时,请将$item->date_begin替换为:

date('d-m-Y H:i:s', strtotime($item->date_begin))

之后,当您将其保存在数据库中时,添加DB更新:

date('Y-m-d H:i:s', strtotime($request->date_begin))
vsaztqbk

vsaztqbk3#

protected $casts = [
         'inicio'  => 'datetime:Y-m-d\TH:i'
        ,'entrega'  => 'datetime:Y-m-d\TH:i'
   ];

你可以用它的日期时间-本地字段。贪婪你。喜欢我如果为你工作

xxhby3vn

xxhby3vn4#

//应强制转换为本机类型的属性

protected $casts = [
        'email_verified_at' => 'datetime'
    ];

// get formatted datetime string for email_verified_at

public function getEmailVerifiedAttribute()
 {
        if ($this->email_verified_at) {
            $date = Carbon::createFromFormat('Y-m-d H:i:s', $this->email_verified_at, 'UTC');
            return $date->setTimezone($this->timezone->name)->isoFormat('LLLL');
        } else {
            return null;
        }
    }

就像Laravel的文件一样。

qxgroojn

qxgroojn5#

你可以在blade文件中这样使用

{{date('Y-m-d',strtotime($invoice->invoice_created_date))}}

使用日期函数来修复此问题

相关问题