php视图显示当前时间,关于php:在laravel视图页面中更改日期格式

我想更改从数据库中获取的日期格式。

现在我得到了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"之类的错误!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值