首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Laravel 5中获得人类可读格式的时间差?

如何在Laravel 5中获得人类可读格式的时间差?
EN

Stack Overflow用户
提问于 2015-06-23 08:30:42
回答 3查看 52.8K关注 0票数 34

我想显示当前日期和时间与存储在updated_at列中的日期和时间之间的差异。然而,我希望它是人类友好的,就像:

代码语言:javascript
复制
53 mins ago
2 hours ago
3 days ago

有没有什么函数可以让我使用它变得更简单?

为了确保您理解我的意思,假设我的数据库中有一个等于2015-06-22 20:00:03的列(updated_at),当前时间是20:00:28。然后我想看看:

代码语言:javascript
复制
25 mins ago

当它高于59分钟时,我只想显示小时数,当它高于24小时时,我想看看有多少天前。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-23 08:52:50

默认情况下,Eloquent将created_atupdated_at列转换为Carbon的实例。因此,如果您使用Eloquent获取数据,则可以执行以下操作。

代码语言:javascript
复制
$object->updated_at->diffForHumans();

如果您想要自定义将自动变化的字段,那么在您的模型中,您可以根据自己的意愿对其进行自定义。

代码语言:javascript
复制
// Carbon instance fields
protected $dates = ['created_at', 'updated_at', 'deleted_at'];
票数 96
EN

Stack Overflow用户

发布于 2019-10-03 14:41:34

如果日期是字符串格式,请使用laravel碳;例如,

代码语言:javascript
复制
 {{ \Carbon\Carbon::parse($on_revision->assignment->deadline)->diffForhumans() }}

注意我是如何将字符串包装在carbon::parse()中的

票数 8
EN

Stack Overflow用户

发布于 2021-10-08 08:09:07

代码语言:javascript
复制
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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30991992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档