我想更改从数据库中提取的日期格式。
现在我得到了2016-10-01 {{$user->from_date}}
。我想在laravel 5.3中更改格式'd-m-y'
{{ $user->from_date->format('d/m/Y')}}
答案 0 :(得分:92)
在Laravel中使用 Carbon 好
{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}
答案 1 :(得分:77)
试试这个:
var arr = JSON.parse('[{"id": 1,"lg_name": "foo","lg_password": "bar"},{"id": 2,"lg_name": "user","lg_password": "passwd"}]');
var newObj = {}
for (var i = 0; i < arr.length; i++)
{
newObj[arr[i].lg_name] = {id: arr[i].id, password: arr[i].lg_password}
}
它会将日期转换为date('d-m-Y', strtotime($user->from_date));
格式。
注意:此解决方案是适用于php及其任何框架的通用解决方案。对于Laravel特定方法,请尝试Hamelraj提供的解决方案。
答案 2 :(得分:35)
在您的模型集中:
protected $dates = ['name_field'];
在你看来之后:
{{ $user->from_date->format('d/m/Y') }}
作品
答案 3 :(得分:29)
您可以查看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 }}
,您将看到所需的格式。
答案 4 :(得分:12)
易于使用刀片模板中的日期 Carbon 就这样
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
NSInteger numOfSections = 0;
if ([_mutableArray count]==0)
{
UILabel *noDataLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, tableView.bounds.size.height)];
noDataLabel.text = NSLocalizedString(@"No Records..!!!",nil);
noDataLabel.textColor = [UIColor blackColor];
noDataLabel.textAlignment = NSTextAlignmentCenter;
tableView.backgroundView = noDataLabel;
tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
}
else
{
tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
numOfSections = 1;
tableView.backgroundView = nil;
}
return numOfSections;
}
答案 5 :(得分:4)
方法一:
使用strtotime()
时间是将日期更改为给定格式的最佳格式。
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
答案 6 :(得分:3)
您可以通过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);
答案 7 :(得分:2)
我遇到了类似的问题,我想更改格式,但我也希望能够灵活地更改刀片模板引擎中的格式。
因此,我将我的模型设置如下:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
\Carbon\Carbon::setToStringFormat('d-m-Y');
class User extends Model
{
protected $dates = [
'from_date',
];
}
setToStringFormat
会将所有日期设置为此模型使用此格式
这对我来说的优点是我可以拥有我想要的格式而不需要mutator,因为使用mutator,属性作为字符串返回,这意味着在刀片模板中,如果我想要,我将不得不写这样的东西更改模板中的格式:
{{ date('Y', strtotime($user->from_date)) }}
哪个不干净。
相反,该属性仍然作为Carbon实例返回,但是它首先以所需的格式返回 这意味着在模板中我可以编写以下更清晰的代码:
{{ $user->from_date->format('Y') }}
除了能够重新格式化Carbon实例之外,我还可以在模板中的属性上调用各种Carbon方法。
这种方法可能存在疏忽;我要打赌,如果它影响其他脚本,在模型顶部指定字符串格式并不是一个好主意。 从我到目前为止看到的情况来看,这还没有发生。它仅更改了该模型的默认碳。
在这种情况下,将Carbon格式设置回原来位于模型脚本底部的位置可能会很好。这是一个提出的想法,但它适用于每个模型都有自己的格式 相反,如果您为每个模型使用相同的格式,则在AppServiceProvider中使用相同的格式。这样可以使代码更整洁,更容易维护。
答案 8 :(得分:2)
您可以使用Carbon::createFromTimestamp
刀片
{{ \Carbon\Carbon::createFromTimestamp($user->from_date)->format('d-m-Y')}}
答案 9 :(得分:2)
我建议使用 isoFormat
以获得更好的网页外观。
{{ \Carbon\Carbon::parse($blog->created_at)->isoFormat('MMM Do YYYY')}}
结果是
<块引用>2021 年 1 月 21 日
答案 10 :(得分:0)
有时更改日期格式无法正常工作,尤其是在Laravel中。因此,在这种情况下,最好使用:
$date1 = strtr($_REQUEST['date'], '/', '-');
echo date('Y-m-d', strtotime($date1));
然后您可以避免出现类似“ 1970-01-01”的错误!
答案 11 :(得分:0)
在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');
希望有帮助!
答案 12 :(得分:0)
在 Laravel 8 中,您可以使用日期转换:https://laravel.com/docs/8.x/eloquent-mutators#date-casting
在您的模型中设置:
protected $casts = [
'my_custom_datetime_field' => 'datetime'
];
然后在您的刀片模板中,您可以使用 format()
方法:
{{ $my_custom_datetime_field->format('d. m. Y') }}