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

时间:2016-02-24 23:57:38

标签: php laravel-5 php-carbon

让我的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;
    }

1 个答案:

答案 0 :(得分:1)

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

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