我的数据库以mysql DateTime格式YYYY-MM-DD HH:MM:SS
存储两个日期。当我获得这些数据(包括其他字符串等)时,我想将其转换为另一种格式,可能是DD.MM.YYYY HH:MM:SS
并将其显示在表格单元格中的视图上。我的数据库日期称为date_begin
和date_end
。
更好的是,当我从数据库获取此日期时,将其转换为DD.MM.YYYY
格式,将日期和时间分开,将时间存储在自定义字符串中(" HH1:MM1 - HH2:MM2&# 34;)并将两者都放在我的观点上。
我怎样才能做到这一点?我发现了一些在视图上进行转换的示例,而不是在控制器中,但我认为这对MVC来说并不好。
答案 0 :(得分:15)
不确定您在哪里得到的印象"格式化视图中的日期对MVC" 不利,因为没问题无论如何。
如果您正在使用Eloquent Models,则可以轻松完成:
1。将列添加到模型类中的$dates
属性:
protected $dates = ['date_begin', 'date_end'];
这将确保值mutated到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') }}
无需在时间和日期中拆分值,只需使用您想要的任何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))