在Laravel中将时间戳转换为日期?

在Laravel中将时间戳转换为日期?,laravel,laravel-4,eloquent,Laravel,Laravel 4,Eloquent,如何使用all()方法从数据库返回时间戳转换为日期(d-m-Y H:I)的所有行 它不是在列中创建的,也不是在列中更新的,它是自定义属性,如果您愿意,可以称之为生日。像在中创建的这样的时间戳列首先被解析。U只是时间戳格式。您可以返回自己的格式。有关其他格式,请参见 编辑:如我在评论中所述,getDateFormat()用于两种方式(插入、选择)。最好的选择是在模型内部使用格式。例如: public function getMyBirthdayAttribute() { return $t

如何使用
all()
方法从数据库返回时间戳转换为日期
(d-m-Y H:I)
的所有行


它不是在列中创建的,也不是在列中更新的,它是自定义属性,如果您愿意,可以称之为生日。

像在中创建的这样的时间戳列首先被解析。U只是时间戳格式。您可以返回自己的格式。有关其他格式,请参见

编辑:如我在评论中所述,
getDateFormat()
用于两种方式(插入、选择)。最好的选择是在模型内部使用格式。例如:

public function getMyBirthdayAttribute()
{
    return $this->my_birthday->format('d.m.Y');
}
使用
$model->my_birth
调用该属性

// controller
$posts = Post::all();

// within sometemplate.blade.php
@foreach($posts as $post)
    my formatted date: {{ $post->my_birthday }}
@endforeach

在这种情况下,您需要转换
查询
中的日期,如果
mysql
被用作您的数据库,那么您可以使用如下原始查询:

// Assumed my_birthday is like 1255033470
$raw = DB::raw("date_format(from_unixtime(my_birthday),'%b %d, %Y %l:%i %p') as dob");
$result = Model::get(array('id', 'username', $raw));
您可以在一行内书写:

$result = Model::get(array('id', 'username', DB::raw("...")));

使用Laravel IMHO管理日期的更好方法是使用内置于Laravel中的
getDates
访问器

您所需要做的就是在模型上设置一个方法

public function getDates()
{
    return [
        'my_birthday',
        'created_at',
        'updated_at',
    ];
}
这将返回一个
Carbon
对象。碳元素在处理日期方面是非常棒的

这是默认情况下Laravel在创建和更新时所做的

然后,您可以执行以下操作:

$my_birthday->diffForHumans()  // 2 Days ago
$my_birthday->format('d.m.Y')  // 20.02.1979
这里有很多帮助你的人。查看碳文档:


绝对值得学习。对于初学者来说,这可能不容易理解。不过,我建议你看一看,仔细想想。它将改变你的生活-日期可能是一种痛苦

只要把它放在你的代码上就行了 $post它取决于您创建的内容

$post ->created_at->format('d.m.Y')

它不是在创建,而是在更新。这是自定义数据,有什么区别吗?如果我尝试:Y-m-d H:i:s,它仍然返回时间戳。我明白了<代码>getDateFormat用于插入和选择。如果我理解正确的话,您只需要一种从数据库格式化日期时间格式的简单方法。我将相应地更新我的答案。如何在所有方法中使用$model->my_birth?我真的很抱歉,但我不能让它工作,或者我得到一个错误或时间戳。这只是模型的一个基本属性。为了更好地理解,我添加了一个新示例。对不起,这不起作用。您将始终输入输出日期1970年1月1日。为什么不输入?你的档案是什么,时间戳是多少?类似于
1255033470
?它从1394902800开始。每个日期输出为1970年1月1日。(我已将您的示例修改为%d-%m-%Y)检查更新的答案,将
'my_birth'
更改为
my_birth
。原始查询方法将有缺点?{{Carbon\Carbon::parse($birth->created_at)->格式('d-m-Y H:I')}