如何在数据库 laravel 中的 created_at 或 updated_at 字段的 blade 视图中显示 unix 时间戳?
how to show unix timestamp in blade view from created_at or updated_at field in database laravel?
我想从 [=44= 中的数据库字段(created_at 和 updated_at)获取 UNIX 时间戳或将 created_at 或 updated_at 日期转换为 UNIX 时间戳格式] ,我该怎么做?
这是我控制器中的代码:
public function viewArchives(){
$data = Archive::select(‘created_at’)->get();
return view(‘view.archives’, compact(‘data’));
}
并在 view/archives.blade.php 中:
<?php echo $data;?>
结果是:
{“created_at”:”2019-03-17 19:10:30″}
但我希望结果是这样的:
{“created_at”:”1552849830″}
如何得到这个结果?
添加 strtotime() view/archives.blade.php :
<?php echo strtotime( $data );?>
$string = '2019-03-17 19:10:30';
$obj = new stdClass;
$obj->created_at = $string;
$collection = [$obj];
foreach ($collection as $k => &$v) {
$collection[$k]->created_at = strtotime($v->created_at);
}
//var_dump($collection);
或
$string = '2019-03-17 19:10:30';
$obj = new stdClass;
$obj->created_at = $string;
$collection = [$obj];
array_walk($collection, function (&$item, $key) {
$item->created_at = strtotime($item->created_at);
});
//var_dump($collection);
或者你的情况
public function viewArchives()
{
$data = Archive::select('created_at')->get();
foreach ($data as $k => &$v) {
$v->created_at = strtotime($v->created_at);
}
return view('view.archives', compact('data'));
}
或
public function viewArchives()
{
$data = Archive::select('created_at')->get();
array_walk($data, function (&$item, $key) {
$item->created_at = strtotime($item->created_at);
});
return view('view.archives', compact('data'));
}
这是使用 array_walk()
功能的好地方。
使用 Eloquent Model
实际上可以定义每列 $casts
:
class SomeModel extends Model
{
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'created_at' => 'datetime'
];
}
如果您想要纪元时间戳,只需删除此转换(可能存在)。
当时间戳不是来自任何 Eloquent Model
时,仍然可以使用 Blade 渲染它:
@php
$dt = new DateTime();
echo $dt->setTimestamp( $timestamp )->format("Y-m-d H:m:s");
@endphp
或者反过来:
@php
echo strtotime( $isodate );
@endphp
我想从 [=44= 中的数据库字段(created_at 和 updated_at)获取 UNIX 时间戳或将 created_at 或 updated_at 日期转换为 UNIX 时间戳格式] ,我该怎么做?
这是我控制器中的代码:
public function viewArchives(){
$data = Archive::select(‘created_at’)->get();
return view(‘view.archives’, compact(‘data’));
}
并在 view/archives.blade.php 中:
<?php echo $data;?>
结果是:
{“created_at”:”2019-03-17 19:10:30″}
但我希望结果是这样的:
{“created_at”:”1552849830″}
如何得到这个结果?
添加 strtotime() view/archives.blade.php :
<?php echo strtotime( $data );?>
$string = '2019-03-17 19:10:30';
$obj = new stdClass;
$obj->created_at = $string;
$collection = [$obj];
foreach ($collection as $k => &$v) {
$collection[$k]->created_at = strtotime($v->created_at);
}
//var_dump($collection);
或
$string = '2019-03-17 19:10:30';
$obj = new stdClass;
$obj->created_at = $string;
$collection = [$obj];
array_walk($collection, function (&$item, $key) {
$item->created_at = strtotime($item->created_at);
});
//var_dump($collection);
或者你的情况
public function viewArchives()
{
$data = Archive::select('created_at')->get();
foreach ($data as $k => &$v) {
$v->created_at = strtotime($v->created_at);
}
return view('view.archives', compact('data'));
}
或
public function viewArchives()
{
$data = Archive::select('created_at')->get();
array_walk($data, function (&$item, $key) {
$item->created_at = strtotime($item->created_at);
});
return view('view.archives', compact('data'));
}
这是使用 array_walk()
功能的好地方。
使用 Eloquent Model
实际上可以定义每列 $casts
:
class SomeModel extends Model
{
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'created_at' => 'datetime'
];
}
如果您想要纪元时间戳,只需删除此转换(可能存在)。
当时间戳不是来自任何 Eloquent Model
时,仍然可以使用 Blade 渲染它:
@php
$dt = new DateTime();
echo $dt->setTimestamp( $timestamp )->format("Y-m-d H:m:s");
@endphp
或者反过来:
@php
echo strtotime( $isodate );
@endphp