如何使用 Laravel 5 获得人类可读格式的时间差异?
How do I get the difference of time in human readable format with Laravel 5?
我想显示当前日期和时间与 updated_at
列中存储的日期和时间之间的差异。但是,我希望它像这样对人友好:
53 mins ago
2 hours ago
3 days ago
有没有我可以使用的功能使它更容易?
为了确保您理解我的意思,假设我的数据库中有一列 (updated_at
),它等于 2015-06-22 20:00:03
,当前时间是 20:00:28
。那我想看看:
25 mins ago
当超过 59 分钟时,我只想显示小时数,当超过 24 小时时,我想查看多少天前。
默认情况下,Eloquent 将 created_at
和 updated_at
列转换为 Carbon 的实例。因此,如果您使用 Eloquent 获取数据,那么您可以按如下方式进行操作。
$object->updated_at->diffForHumans();
如果您想自定义将自动变异的字段,那么在您的模型中,您可以根据需要自定义它们。
// Carbon instance fields
protected $dates = ['created_at', 'updated_at', 'deleted_at'];
如果日期是字符串格式,使用laravel Carbon;
例如,
{{ \Carbon\Carbon::parse($on_revision->assignment->deadline)->diffForhumans() }}
请注意我是如何将字符串包装在 carbon::parse()
中的
function timeDiff($firstTime, $lastTime): string
{
$firstTime = strtotime($firstTime);
$lastTime = strtotime($lastTime);
$difference = $lastTime - $firstTime;
$data['years'] = abs(floor($difference / 31536000));
$data['days'] = abs(floor(($difference - ($data['years'] * 31536000)) / 86400));
$data['hours'] = abs(floor(($difference - ($data['years'] * 31536000) - ($data['days'] * 86400)) / 3600));
$data['minutes'] = abs(floor(($difference - ($data['years'] * 31536000) - ($data['days'] * 86400) - ($data['hours'] * 3600)) / 60));
$timeString = '';
if ($data['years'] > 0) {
$timeString .= $data['years'] . " Years, ";
}
if ($data['days'] > 0) {
$timeString .= $data['days'] . " Days, ";
}
if ($data['hours'] > 0) {
$timeString .= $data['hours'] . " Hours, ";
}
if ($data['minutes'] > 0) {
$timeString .= $data['minutes'] . " Minutes";
}
return $timeString;
}
我想显示当前日期和时间与 updated_at
列中存储的日期和时间之间的差异。但是,我希望它像这样对人友好:
53 mins ago
2 hours ago
3 days ago
有没有我可以使用的功能使它更容易?
为了确保您理解我的意思,假设我的数据库中有一列 (updated_at
),它等于 2015-06-22 20:00:03
,当前时间是 20:00:28
。那我想看看:
25 mins ago
当超过 59 分钟时,我只想显示小时数,当超过 24 小时时,我想查看多少天前。
默认情况下,Eloquent 将 created_at
和 updated_at
列转换为 Carbon 的实例。因此,如果您使用 Eloquent 获取数据,那么您可以按如下方式进行操作。
$object->updated_at->diffForHumans();
如果您想自定义将自动变异的字段,那么在您的模型中,您可以根据需要自定义它们。
// Carbon instance fields
protected $dates = ['created_at', 'updated_at', 'deleted_at'];
如果日期是字符串格式,使用laravel Carbon; 例如,
{{ \Carbon\Carbon::parse($on_revision->assignment->deadline)->diffForhumans() }}
请注意我是如何将字符串包装在 carbon::parse()
中的function timeDiff($firstTime, $lastTime): string
{
$firstTime = strtotime($firstTime);
$lastTime = strtotime($lastTime);
$difference = $lastTime - $firstTime;
$data['years'] = abs(floor($difference / 31536000));
$data['days'] = abs(floor(($difference - ($data['years'] * 31536000)) / 86400));
$data['hours'] = abs(floor(($difference - ($data['years'] * 31536000) - ($data['days'] * 86400)) / 3600));
$data['minutes'] = abs(floor(($difference - ($data['years'] * 31536000) - ($data['days'] * 86400) - ($data['hours'] * 3600)) / 60));
$timeString = '';
if ($data['years'] > 0) {
$timeString .= $data['years'] . " Years, ";
}
if ($data['days'] > 0) {
$timeString .= $data['days'] . " Days, ";
}
if ($data['hours'] > 0) {
$timeString .= $data['hours'] . " Hours, ";
}
if ($data['minutes'] > 0) {
$timeString .= $data['minutes'] . " Minutes";
}
return $timeString;
}