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

use*_*779 59 php date laravel

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

{{ $user->from_date->format('d/m/Y')}}
Run Code Online (Sandbox Code Playgroud)

Ham*_*raj 108

在Laravel中使用是好的

{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}
Run Code Online (Sandbox Code Playgroud)

  • 正确...这对于某些情况来说并不好!所以小心! (2认同)

May*_*eyz 95

试试这个:

date('d-m-Y', strtotime($user->from_date));
Run Code Online (Sandbox Code Playgroud)

它会将日期转换为d-m-Y格式.

注意:此解决方案是适用于php及其任何框架的通用解决方案.对于Laravel特定方法,请尝试Hamelraj提供的解决方案.

  • @ user3386779:它有效,但不是最漂亮的解决方案:) Laravel很少有机制来做这件事.如果您选择我的答案,您需要在一个地方设置日期格式,并且每次需要显示`from_date`列时都不需要记得更改日期格式. (2认同)

Hor*_*ias 46

在您的模型集中:

protected $dates = ['name_field'];
Run Code Online (Sandbox Code Playgroud)

在你看来之后:

{{ $user->from_date->format('d/m/Y') }}
Run Code Online (Sandbox Code Playgroud)

作品

  • 我认为这是最“laravel 的方式”来做到这一点,所以这应该被标记为正确的答案。 (4认同)

Mar*_*iba 32

您可以查看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');
}
Run Code Online (Sandbox Code Playgroud)

然后在视图中如果你运行{{ $user->from_date }}你将看到你想要的格式.

  • 这应该是接受的答案.这是laravel中更好的方法 (10认同)

Dib*_*Roy 13

您可以通过 3 种方式进行操作:

1) 使用 Laravel 模型

$user = \App\User::find(1);

$newDateFormat = $user->created_at->format('d/m/Y');

dd($newDateFormat);
Run Code Online (Sandbox Code Playgroud)

2)使用PHP strtotime

$user = \App\User::find(1);

$newDateFormat2 = date('d/m/Y', strtotime($user->created_at));

dd($newDateFormat2);
Run Code Online (Sandbox Code Playgroud)

3) 使用碳

$user = \App\User::find(1);

$newDateFormat3 = \Carbon\Carbon::parse($user->created_at)->format('d/m/Y');

dd($newDateFormat3);
Run Code Online (Sandbox Code Playgroud)


Uma*_*riq 12

刀片模板中易于使用的日期使用那种方式

{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}
Run Code Online (Sandbox Code Playgroud)


小智 6

我建议使用它isoFormat来获得更好的网页外观。

{{ \Carbon\Carbon::parse($blog->created_at)->isoFormat('MMM Do YYYY')}}
Run Code Online (Sandbox Code Playgroud)

结果是

2021 年 1 月 21 日

碳延伸


小智 6

在 Laravel 8 中,您可以使用日期转换:https://laravel.com/docs/8.x/eloquent-mutators#date-casting

在您刚刚设置的模型中:

protected $casts = [
    'my_custom_datetime_field' => 'datetime'
];
Run Code Online (Sandbox Code Playgroud)

然后在你的刀片模板中你可以使用以下format()方法:

{{ $my_custom_datetime_field->format('d. m. Y') }}
Run Code Online (Sandbox Code Playgroud)


Nar*_*r P 5

方法一:

使用strtotime()to时间是将日期更改为给定格式的最佳格式。

strtotime() -将任何英文文本日期时间描述解析为Unix时间戳

该函数期望得到一个包含英语日期格式的字符串,并将尝试将该格式解析为相对于现在给出的时间戳的Unix时间戳(自1970年1月1日00:00:00 UTC以来的秒数),或者当前时间(如果未提供)。

例:

<?php
$timestamp = strtotime( "February 26, 2007" );  
print date('Y-m-d', $timestamp );
?>
Run Code Online (Sandbox Code Playgroud)

输出:

2007-02-26
Run Code Online (Sandbox Code Playgroud)

方法二:

date_format() -返回一个新的DateTime对象,然后格式化日期:

<?php
$date=date_create("2013-03-15");
echo date_format($date,"Y/m/d H:i:s");
?>
Run Code Online (Sandbox Code Playgroud)

输出:

 2013/03/15 00:00:00 
Run Code Online (Sandbox Code Playgroud)


Jus*_*rty 5

我遇到了类似的问题,我想更改格式,但我也希望能够灵活地更改刀片模板引擎中的格式。

因此,我将我的模型设置如下:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

\Carbon\Carbon::setToStringFormat('d-m-Y');

class User extends Model
{
    protected $dates = [
        'from_date',
    ];
}
Run Code Online (Sandbox Code Playgroud)

setToStringFormat会设置所有日期使用这种格式的这种模式。
这对我来说的好处是,我可以在没有 mutator 的情况下拥有我想要的格式,因为使用 mutator,属性作为字符串返回,这意味着在刀片模板中,如果我想,我将不得不写这样的东西更改模板中的格式:

{{ date('Y', strtotime($user->from_date)) }}
Run Code Online (Sandbox Code Playgroud)

这不是很干净。

相反,该属性仍作为 Carbon 实例返回,但它首先以所需格式返回。
这意味着我可以在模板中编写以下更简洁的代码:

{{ $user->from_date->format('Y') }}
Run Code Online (Sandbox Code Playgroud)

除了能够重新格式化 Carbon 实例之外,我还可以对模板中的属性调用各种 Carbon 方法。

这种方法可能存在疏忽;我敢打赌,在模型顶部指定字符串格式不是一个好主意,以防它影响其他脚本。从我目前看到的情况来看,这并没有发生。它仅更改了该模型的默认碳。

在这种情况下,最好将 Carbon 格式设置回模型脚本底部的原始格式。这是一个笨拙的想法,但它适用于每个模型都有自己的格式。
相反,如果您为每个模型使用相同的格式,则在您的 AppServiceProvider 中。这只会使代码更整洁,更易于维护。


kos*_*sta 5

您可以使用 Carbon::createFromTimestamp

刀刃

{{ \Carbon\Carbon::createFromTimestamp(strtotime($user->from_date))->format('d-m-Y')}}
Run Code Online (Sandbox Code Playgroud)