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

时间:2014-04-17 09:28:11

标签: laravel laravel-4 eloquent

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

它不是created_atupdated_at列,它是自定义属性,如果您愿意,请将其称为birthday

5 个答案:

答案 0 :(得分:8)

首先解析像created_at这样的时间戳列。 U 只是时间戳格式。你可以返回自己的格式。对于其他格式,请参阅date docs

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

public function getMyBirthdayAttribute()
{
    return $this->my_birthday->format('d.m.Y');
}

使用$model->my_birthday来调用该属性。

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

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

答案 1 :(得分:7)

使用Laravel IMHO管理日期的更好方法是使用构建到Laravel中的getDates访问器。

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

public function getDates()
{
    return [
        'my_birthday',
        'created_at',
        'updated_at',
    ];
}

这将返回Carbon个对象。碳操纵日期非常棒。

Laravel默认使用created_at和updated_at。

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

$my_birthday->diffForHumans()  // 2 Days ago
$my_birthday->format('d.m.Y')  // 20.02.1979

这里有大量帮手。查看Carbon文档:https://github.com/briannesbitt/Carbon

绝对值得学习。初学者可能不容易理解。但是,我建议你看一看,然后绕过它。它会改变你的生活 - 日期可能是一种痛苦!

答案 2 :(得分:2)

在这种情况下,您需要转换query中的日期,如果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("...")));

答案 3 :(得分:1)

日期属于时间戳类型,其格式如下:“ YYYY-MM-DD HH:MM:SS”或“ 2008-10-05 21:34:02”。

$res = mysql_query("SELECT date FROM times;");
while ( $row = mysql_fetch_array($res) ) {
   echo $row['date'];
}

PHP strtotime函数将MySQL timestamp解析为Unix timestamp,可将其用于PHP date函数中的进一步解析或格式化。

以下是一些其他可能实际使用的示例日期输出格式:

echo date("F j, Y g:i a", strtotime($row["date"]));                  // October 5, 2008 9:34 pm
echo date("m.d.y", strtotime($row["date"]));                         // 10.05.08
echo date("j, n, Y", strtotime($row["date"]));                       // 5, 10, 2008
echo date("Ymd", strtotime($row["date"]));                           // 20081005
echo date('\i\t \i\s \t\h\e jS \d\a\y.', strtotime($row["date"]));   // It is the 5th day.
echo date("D M j G:i:s T Y", strtotime($row["date"]));               // Sun Oct 5 21:34:02 PST 2008

答案 4 :(得分:0)

只需将其放在您的代码上即可 $ post取决于你创建的内容

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