如何使用 Laravel 5 获得人类可读格式的时间差异?

     2023-03-14     56

关键词:

【中文标题】如何使用 Laravel 5 获得人类可读格式的时间差异?【英文标题】:How do I get the difference of time in human readable format with Laravel 5? 【发布时间】:2015-09-08 14:46:07 【问题描述】:

我想显示当前日期和时间与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 小时时,我想看看几天前。

【问题讨论】:

看看this(在google上找到) 你可以使用Carbon,它是 Laravel 自带的。 嗯...完全没有,我问的是一个特定的现有函数来获取差异。在 laravel5 中的时间。 This question is being discussed on meta. Calculate difference between two dates using Carbon and Blade 和/或 Carbon Difference in Time between two Dates in hh:mm:ss format 的可能重复项(取自第二次重新打开问题之前列出的重复项)。 【参考方案1】:

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

$object->updated_at->diffForHumans();

如果您想自定义将自动变异的字段,那么在您的模型中,您可以根据需要自定义它们。

// Carbon instance fields
protected $dates = ['created_at', 'updated_at', 'deleted_at'];

【讨论】:

添加到这个答案中,您不需要将 'created_at' 和 'updated_at' 添加到 $dates 数组中,因为它们是自动添加的。要覆盖它并删除它们,请将 $timestamps 属性设置为 false【参考方案2】:

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

  \Carbon\Carbon::parse($on_revision->assignment->deadline)->diffForhumans() 

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

【讨论】:

【参考方案3】:
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;

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

如何将字符串时间戳更改为人类可读的日期格式? [复制]

】如何将字符串时间戳更改为人类可读的日期格式?[复制]【英文标题】:HowtochangestringtimestampintoHumanreadabledateformat?[duplicate]【发布时间】:2017-07-1910:09:21【问题描述】:我正在尝试将字符串时间戳转换为以下内容:2分钟前。1小... 查看详情

如何以人类可读的格式输出(到日志)多级数组?

】如何以人类可读的格式输出(到日志)多级数组?【英文标题】:Howtooutput(toalog)amulti-levelarrayinaformatthatishuman-readable?【发布时间】:2012-08-0618:22:32【问题描述】:我正在开发一个drupal站点,在调试时,我总是需要通读长的嵌套... 查看详情

如何以人类可读的格式显示 BigDecimal 值?

】如何以人类可读的格式显示BigDecimal值?【英文标题】:HowtodisplayBigDecimalvalueinahumanreadableformat?【发布时间】:2014-02-2404:59:17【问题描述】:假设我们有一个像这样设置的BigDecimal变量,我们不能改变它的创建方式:BigDecimalnum=new... 查看详情

如何以人类可读的方式格式化 CouchDB 设计文档?

】如何以人类可读的方式格式化CouchDB设计文档?【英文标题】:HowdoIformatCouchDBdesigndocumentsinahumanreadableway?【发布时间】:2013-09-0216:57:20【问题描述】:由于views是用JSON在CouchDB中定义的,我很难以人类可读的方式定义它们。收下... 查看详情

如何在 python 脚本中格式化 postgreSQL 查询以获得更好的可读性?

】如何在python脚本中格式化postgreSQL查询以获得更好的可读性?【英文标题】:HowtoformatpostgreSQLqueriesinapythonscriptforbetterreadability?【发布时间】:2019-04-1301:04:58【问题描述】:我还有一个与我正在为学校工作的项目有关的问题。我... 查看详情

如何从 Beacon 数据包中获取人类可读的日期/时间格式

】如何从Beacon数据包中获取人类可读的日期/时间格式【英文标题】:Howtogetahuman-readabledate/timeformatfromBeaconpackets【发布时间】:2018-02-1206:01:11【问题描述】:我想从IEEE802.11[a,b,g,n]无线数据包中获取人类可读的日期/时间格式。我... 查看详情

人类可读格式的时间戳

...bleformat【发布时间】:2011-07-2123:25:00【问题描述】:我在使用javascript从unix时间戳转换为人类表示时遇到了一个奇怪的问题这是时间戳1301090400这是我的javascriptvardate=newDate(timestamp*1000);varyear=date.getFullYear();varmonth=dat 查看详情

如何以 json 格式(双引号)漂亮地打印(人类可读的打印)Python dict? [复制]

】如何以json格式(双引号)漂亮地打印(人类可读的打印)Pythondict?[复制]【英文标题】:Howtoprettyprint(humanreadablyprint)aPythondictinjsonformat(doublequotes)?[duplicate]【发布时间】:2016-07-0111:40:01【问题描述】:这是thisone的后续问题。我... 查看详情

htop 输出到人类可读文件

...我的文本因格式化字符串而乱码(见下文)。有没有办法获得更好的、人类可读的输出?^[7^[[?47h^[[1;30r^[[m^[[4l^[[?1h^[=^[[m^[[?1000h^[[m^[[ 查看详情

使用 Carbon 返回人类可读的日期时间差

...【发布时间】:2013-06-2001:26:26【问题描述】:我正在使用Laravel4创建我的项目。我目前正在构建cmets部分,我想显示该帖子是多久之前创建的,有点像Facebook的\'10分钟前\'&\'2周前\'em>等等我做了一些研究,发现一个名为Car 查看详情

laravel-如何在 5.1 中使用 zizaco 获得具有所有角色和所有权限的用户?

】laravel-如何在5.1中使用zizaco获得具有所有角色和所有权限的用户?【英文标题】:laravel-howcanigetauserwithallrolesandallpermissionswithperroleinormin5.1withzizaco?【发布时间】:2017-04-2701:19:47【问题描述】:我创建所有模型和关系。一个用户... 查看详情

将日期从人类可读格式转换为纪元失败

】将日期从人类可读格式转换为纪元失败【英文标题】:Conversionofdatefromhuman-readableformattoepochfails【发布时间】:2021-11-1104:36:55【问题描述】:我想创建一个程序,将特定人类可读格式的日期转换为纪元。到目前为止,我有以下... 查看详情

以人类可读格式转换纪元时间

】以人类可读格式转换纪元时间【英文标题】:convertingepochtimeinhumanreadableformat【发布时间】:2019-12-0315:33:43【问题描述】:我想将纪元时间转换为人类可读的格式,当我给出随机纪元时间时,例如下面的一个epoch1=datetime.datetime.f... 查看详情

C++ IP 地址人类可读的形式

...“127.0.0.1”)转换为适合标准套接字调用的结构。现在你如何翻译回来?我知道我可以做一些位移来准确地获得我想要的位集并将它们打印出来,但是有没有任 查看详情

java示例代码_REST服务:如何使用XML+XSLT生成人类可读的输出

java示例代码_REST服务:如何使用XML+XSLT生成人类可读的输出 查看详情

如何使用 ruby​​ on rails 生成人类可读的时间范围

】如何使用ruby​​onrails生成人类可读的时间范围【英文标题】:Howtogenerateahumanreadabletimerangeusingrubyonrails【发布时间】:2011-05-0709:07:53【问题描述】:我正在尝试找到生成以下输出的最佳方法<name>jobtook30seconds<name>jobtook1... 查看详情

将 dict 保存为 JSON,以便它们是人类可读的 [重复]

...格式,就像这个网站一样-https://jsonformatter.curiousconcept.com如何在python中 查看详情

Bash:以人类可读格式将 unix 时间四舍五入到最接近的分钟

...表,如下所示:1481842799,1481842859,.....到目前为止,我设法使用date命令将这个时间转换为人类可读的格式,如下所示:date\' 查看详情