簡體   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