Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在laravel视图页面中更改日期格式_Php_Laravel_Date - Fatal编程技术网

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

Php 在laravel视图页面中更改日期格式,php,laravel,date,Php,Laravel,Date,我想更改从数据库中提取的日期格式。 现在我得到了2016-10-01{{$user->from_date}}。我想更改laravel 5.3中的格式“d-m-y” {{ $user->from_date->format('d/m/Y')}} 试试这个: date('d-m-Y', strtotime($user->from_date)); 它会将日期转换为d-m-Y或您给定的任何格式 注意:此解决方案是适用于php及其任何框架的通用解决方案。对于Laravel特定的方法,请

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

{{ $user->from_date->format('d/m/Y')}}
试试这个:

date('d-m-Y', strtotime($user->from_date));
它会将日期转换为
d-m-Y
或您给定的任何格式


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

在Laravel useCarbon中提供的解决方案

{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}

您可以检查日期变量:

您需要在
$dates
数组中的
User
model列
from\u date
中设置,然后您可以在
$dateFormat
中更改格式

另一个选项是将此方法应用于您的
用户
模型:

public function getFromDateAttribute($value) {
    return \Carbon\Carbon::parse($value)->format('d-m-Y');
}

然后在视图中,如果您运行
{{$user->from\u date}}
,您将看到所需的格式。

方法一:

<?php
$timestamp = strtotime( "February 26, 2007" );  
print date('Y-m-d', $timestamp );
?>
2007-02-26
 2013/03/15 00:00:00 
使用
strotime()
to time是将日期更改为给定格式的最佳格式

strotime()
-将任何英文文本datetime描述解析为Unix时间戳

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

示例:

<?php
$timestamp = strtotime( "February 26, 2007" );  
print date('Y-m-d', $timestamp );
?>
2007-02-26
 2013/03/15 00:00:00 
方法二:

<?php
$timestamp = strtotime( "February 26, 2007" );  
print date('Y-m-d', $timestamp );
?>
2007-02-26
 2013/03/15 00:00:00 
date\u format()
-返回一个新的DateTime对象,然后格式化日期:

<?php
$date=date_create("2013-03-15");
echo date_format($date,"Y/m/d H:i:s");
?>
在模型集中:

protected $dates = ['name_field'];
在你看来:

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

工作原理

刀片模板中的日期使用方便

{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}

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

一、 因此,请按以下方式设置我的模型:


您可以使用
Carbon::createFromTimestamp

刀片

{{ \Carbon\Carbon::createFromTimestamp(strtotime($user->from_date))->format('d-m-Y')}}

有时更改日期格式无法正常工作,尤其是在Laravel中。因此,在这种情况下,最好使用:

$date1 = strtr($_REQUEST['date'], '/', '-');
echo date('Y-m-d', strtotime($date1));

这样就可以避免像“1970-01-01”这样的错误

在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');

希望有帮助

有三种方法可以做到:

1) 利用拉威尔模型

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

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

dd($newDateFormat);
2) 使用PHP strotime

$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);

我建议使用
isoFormat
在网页上获得更好的外观

{{ \Carbon\Carbon::parse($blog->created_at)->isoFormat('MMM Do YYYY')}}
结果是

2021年1月21日


在Laravel 8中,您可以使用日期转换:

在您的模型中,仅设置:

protected $casts = [
    'my_custom_datetime_field' => 'datetime'
];
然后在刀片模板中,您可以使用
format()
方法:

{{ $my_custom_datetime_field->format('d. m. Y') }}


@user3386779:它可以工作,但不是最漂亮的解决方案:)Laravel没有什么机制来做这件事。如果你选择我的答案,你需要在一个地方设置日期格式,而不需要记得每次需要显示“从日期开始”列时都要更改日期格式。@MarekSkiba我在我的答案中也提到了同样的事情:)如何更改语言,例如->“es”几个月名称同意你应该使用@sadiq$user->from_date->format('d/m/Y')非常好而且非常简单的解决方案。同意这是Laravelt更好的方法唯一的缺点是它会向视图返回字符串;因此,如果要在同一视图中显示不同的日期格式,则必须使用碳元素重新分析日期。很抱歉,这是一个变量,因为它使用getFromDateAttribute而不是setFromDateAttribute。据我所知,mutator使用set,accessor使用getThis return current date,如果列为null,我认为这是最“laravel”的方法,所以应该标记为正确答案。我也同意,这是最好的方法,对我来说不起作用。我一直在研究datetime列类型和timestamp列类型,但错误仍然是
调用null上的成员函数format()
如果在模型中使用Laravel的时间戳,然后,在
处创建的
和在
处更新的
字段将已经合并到
$dates
中,因此无需在模型中添加这些特定字段。这至少是在拉威尔8号!是的,当$user->from_date为
null
时会发生什么?@lewis4u如果将null值传递到
parse(null)
中,它将转换为当前日期timeCorrect。。。在某些情况下,这是不好的!所以小心!这不是laravel的问题,这与php有关。阅读:通过查看各个组件之间的分隔符,可以消除
m/d/y
d-m-y
格式中的日期歧义:如果分隔符是斜杠
(/)
,则假定为美式
m/d/y
;然而,如果分隔符为破折号
或点
(.)
,则假定为欧洲
d-m-y
格式。但是,如果年份以两位数格式给出,且分隔符为破折号
),则日期字符串解析为
y-m-d