在laravel视图页面中更改日期格式

时间:2016-10-14 08:29:28

标签: php laravel date

我想更改从数据库中提取的日期格式。 现在我得到了2016-10-01 {{$user->from_date}}。我想在laravel 5.3中更改格式'd-m-y'

{{ $user->from_date->format('d/m/Y')}}

13 个答案:

答案 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 Mutatorshttps://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 日

Carbon Extension

答案 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') }}