我想更改从数据库中获取的日期格式。
现在我得到了2016-10-01 {{$user->from_date}}。我想在laravel 5.3中更改格式'd-m-y'
{{ $user->from_date->format('d/m/Y')}}
在Laravel中使用Carbon的好处
{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}
尝试这个:
date('d-m-Y', strtotime($user->from_date));
它将日期转换为d-m-Y格式。
注意:此解决方案是适用于php及其任何框架的通用解决方案。对于Laravel特定的方法,请尝试使用Hamelraj提供的解决方案。
@ user3386779:它可以工作,但不是最漂亮的解决方案:) Laravel很少有机制可以执行此操作。 如果选择我的答案,则需要将日期格式设置在一个地方,并且不需要记住每次需要显示from_date列时都要更改日期格式。
@MarekSkiba我在回答中也提到了同样的事情:)
是的,它对我来说就像工作一样。 谢谢玛雅克
例如,如何更改语言-> es表示月份名称
$ user-> from_date-> format(d / m / Y)正常
在您的模型集中:
protected $dates = ['name_field'];
在您看来:
{{ $user->from_date->format('d/m/Y') }}
作品
您可以检查Date Mutators:https://laravel.com/docs/5.3/eloquent-mutators#date-mutators
您需要在$dates数组的User模型列from_date中进行设置,然后可以在$dateFormat中更改格式
另一个选项也将此方法应用于您的User模型:
public function getFromDateAttribute($value) {
return \Carbon\Carbon::parse($value)->format('d-m-Y');
}
然后在视图中,如果您运行{{ $user->from_date }},将看到所需的格式。
这应该被接受的答案。这是laravel中更好的方法
同意这是laravel的更好方法
这实际上是正确的答案...它遵循Laravels法则。
唯一的缺点是它将向视图返回一个字符串。 因此,如果您想在同一视图中显示不同的日期格式,则必须使用Carbon重新解析日期。
刀片模板中易于使用的日期以这种方式使用Carbon
{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}
方法一:
使用strtotime()计时是将日期更改为给定格式的最佳格式。
strtotime()-将任何英文文本日期时间描述解析为Unix时间戳
该函数期望得到一个包含英语日期格式的字符串,并将尝试将该格式解析为相对于现在给出的时间戳的Unix时间戳(自1970年1月1日00:00:00 UTC以来的秒数),或者当前时间(如果未提供)。
例:
$timestamp = strtotime("February 26, 2007" );
print date('Y-m-d', $timestamp );
?>
输出:
2007-02-26
方法二:
date_format()-返回一个新的DateTime对象,然后格式化日期:
$date=date_create("2013-03-15");
echo date_format($date,"Y/m/d H:i:s");
?>
输出:
2013/03/15 00:00:00
您可以通过3种方式进行操作:
1)使用Laravel模型
$user = \App\User::find(1);
$newDateFormat = $user->created_at->format('d/m/Y');
dd($newDateFormat);
2)使用PHP strtotime
$user = \App\User::find(1);
$newDateFormat2 = date('d/m/Y', strtotime($user->created_at));
dd($newDateFormat2);
3)使用碳
$user = \App\User::find(1);
$newDateFormat3 = \Carbon\Carbon::parse($user->created_at)->format('d/m/Y');
dd($newDateFormat3);
您可以使用Carbon::createFromTimestamp
刀
{{ \Carbon\Carbon::createFromTimestamp($user->from_date)->format('d-m-Y')}}
我有一个类似的问题,我想更改格式,但是我也想要能够在刀片模板引擎中更改格式的灵活性。
因此,我将模型设置如下:
namespace App;
use Illuminate\Database\Eloquent\Model;
\Carbon\Carbon::setToStringFormat('d-m-Y');
class User extends Model
{
protected $dates = [
'from_date',
];
}
setToStringFormat将设置所有日期以对该模型使用此格式。
对我来说,这样做的好处是,无需增幅器,我就可以拥有自己想要的格式,因为有了增幅器,该属性以字符串形式返回,这意味着在刀片模板中,如果我想更改模板中的格式:
{{ date('Y', strtotime($user->from_date)) }}
这不是很干净。
取而代之的是,该属性仍然作为Carbon实例返回,但是首先以所需的格式返回。
这意味着我可以在模板中编写以下更简洁的代码:
{{ $user->from_date->format('Y') }}
除了能够重新格式化Carbon实例之外,我还可以在模板的属性上调用各种Carbon方法。
这种方法可能会受到监督;我要打赌,在模型顶部指定字符串格式以防影响其他脚本不是一个好主意。 根据我到目前为止所见,这还没有发生。它只更改了该模型的默认Carbon。 strike>
在这种情况下,最好将Carbon格式重新设置为模型脚本底部的原始格式。这是一个想法,但是对于每个模型都有自己的格式都可以。
相反,如果每种模型的格式相同,则在AppServiceProvider中。这样只会使代码更整洁,更易于维护。
在Laravel中,您可以在app / Helper / helper.php中添加一个函数,例如
function formatDate($date = '', $format = 'Y-m-d'){
if($date == '' || $date == null)
return;
return date($format,strtotime($date));
}
并在任何像这样的控制器上调用此函数
$start_date = formatDate($start_date,'Y-m-d');
希望能帮助到你!
有时更改日期格式无法正常工作,尤其是在Laravel中。因此,在这种情况下,最好使用:
$date1 = strtr($_REQUEST['date'], '/', '-');
echo date('Y-m-d', strtotime($date1));
这样就可以避免出现" 1970-01-01"之类的错误!