Laravel格式化数据库结果的DateTime

时间:2015-12-11 13:03:55

标签: mysql laravel datetime time

我的数据库以mysql DateTime格式YYYY-MM-DD HH:MM:SS存储两个日期。当我获得这些数据(包括其他字符串等)时,我想将其转换为另一种格式,可能是DD.MM.YYYY HH:MM:SS并将其显示在表格单元格中的视图上。我的数据库日期称为date_begindate_end

更好的是,当我从数据库获取此日期时,将其转换为DD.MM.YYYY格式,将日期和时间分开,将时间存储在自定义字符串中(" HH1:MM1 - HH2:MM2&# 34;)并将两者都放在我的观点上。

我怎样才能做到这一点?我发现了一些在视图上进行转换的示例,而不是在控制器中,但我认为这对MVC来说并不好。

2 个答案:

答案 0 :(得分:15)

不确定您在哪里得到的印象"格式化视图中的日期对MVC" 不利,因为没问题无论如何。

如果您正在使用Eloquent Models,则可以轻松完成:

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

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

这将确保值mutatedCarbon 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') }}

无需在时间和日期中拆分值,只需使用您想要的任何format从DateTime值显示您想要的内容。

如果你没有使用Eloquent模型,那么你可以手动使用Carbon来设置你的价值格式:

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

答案 1 :(得分:2)

我使用了无碳的PHP解决方案:

获取数据库日期(默认格式为:YYYY-MM-DD HH:MM:SS),并在视图上打印时替换$item->date_begin 到:

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

之后,将其保存到数据库时,添加数据库更新:

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