我想更改从数据库中获取的日期格式。现在我得到了2016-10-01 {{$user->from_date}}
。我想在laravel 5.3中更改格式'dmy'
{{ $user->from_date->format('d/m/Y')}}
Answers:
尝试这个:
date('d-m-Y', strtotime($user->from_date));
它将日期转换成d-m-Y
您指定的格式。
注意:此解决方案是适用于php及其任何框架的常规解决方案。对于Laravel特定的方法,请尝试Hamelraj提供的解决方案。
您可以检查Date Mutators
:https : //laravel.com/docs/5.3/eloquent-mutators#date-mutators
您需要在User
模型列from_date
中设置$dates
数组,然后可以在其中更改格式$dateFormat
另一个选项也将此方法应用于您的User
模型:
public function getFromDateAttribute($value) {
return \Carbon\Carbon::parse($value)->format('d-m-Y');
}
然后在视图中查看是否运行,{{ $user->from_date }}
您将看到所需的格式。
刀片模板中易于使用的日期以这种方式使用Carbon
{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}
您可以通过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);
方法一:
使用strtotime()
to时间是将日期更改为给定格式的最佳格式。
strtotime()
-将任何英文文本日期时间描述解析为Unix时间戳
该函数期望得到一个包含英语日期格式的字符串,并将尝试将该格式解析为相对于现在给出的时间戳的Unix时间戳(自1970年1月1日00:00:00 UTC以来的秒数),或者当前时间(如果未提供)。
例:
<?php
$timestamp = strtotime( "February 26, 2007" );
print date('Y-m-d', $timestamp );
?>
输出:
2007-02-26
方法二:
date_format()
-返回一个新的DateTime对象,然后格式化日期:
<?php
$date=date_create("2013-03-15");
echo date_format($date,"Y/m/d H:i:s");
?>
输出:
2013/03/15 00:00:00
我有一个类似的问题,我想更改格式,但是我也想要能够在刀片模板引擎中更改格式的灵活性。
因此,我将模型设置如下:
<?php
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。
在这种情况下,最好将Carbon格式重新设置为模型脚本底部的原始格式。这是一个想法,但是对于每个模型都有自己的格式都可以。
相反,如果每种模型的格式相同,则改为在AppServiceProvider中。这样只会使代码更整洁,更易于维护。
有时更改日期格式无法正常工作,尤其是在Laravel中。因此,在这种情况下,最好使用:
$date1 = strtr($_REQUEST['date'], '/', '-');
echo date('Y-m-d', strtotime($date1));
这样就可以避免出现类似“ 1970-01-01”的错误!
m/d/y
或d-m-y
格式的日期的歧义:如果分隔符是斜杠(/)
,则m/d/y
假定为美国人;相反,如果分隔符是破折号(-)
或点(.)
,则采用欧洲d-m-y
格式。但是,如果以两位数格式给出年份,并且分隔符为破折号(-)
,则日期字符串将解析为y-m-d
。 php.net/manual/en/function.strtotime.php
在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');
希望能帮助到你!
from_date
列时都要更改日期格式。