繁体   English   中英

Laravel / Carbon - 以较短的格式返回 diffForHumans(),如 instagram

[英]Laravel / Carbon - Return diffForHumans() in the shorter format like instagram

让我的 API 在我创建的日期返回 diffForHumans():

public function getCreatedAtAttribute($value)
{
    return \Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $value)->diffForHumans();
}

这会创建例如

1 day ago
6 days ago
3 weeks ago
1 month ago

但我希望的是与 Instagram 一样,它只是简单地返回:

1d
6d
3w
1m

除了用空格分割返回值并取第二个单词的第一个字母和数字之外,有没有办法做到这一点?

编辑:输入一个问题为您解决问题的可爱场合之一。

这是我刚刚想到的。 似乎有效,但对任何其他解决方案持开放态度。

    public function getCreatedAtAttribute($value)
    {
        $diffForHumans = \Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $value)->diffForHumans();
        $data = explode(" ", $diffForHumans);

        $number = $data[0];
        $denominator = substr($data[1], 0, 1);
        return $data[0] . $denominator;
    }

Carbon没有内置此功能,但是它应该足够简单,可以像这样操作输出:

str_replace([' days', ' day'], 'd', $diffForHumans);

碳有这个内置:

$object->diffForHumans(null, null, true);

public function diffForHumans($other = null, $syntax = null, $short = false, $parts = 1, $options = null);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM