Laravel - 返回时间之前,如“2d 之前”

Rav*_*Rav 1 php laravel laravel-5

将 PHP 日期转换为如下格式的最佳方法是什么:

3d ago
18h ago
Run Code Online (Sandbox Code Playgroud)

必须为每个项目实现此功能可能会很烦人。

Rav*_*Rav 5

我能得到的最好的东西就是这个模型方法:

public function getTimeAgo($carbonObject) {
    return str_ireplace(
        [' seconds', ' second', ' minutes', ' minute', ' hours', ' hour', ' days', ' day', ' weeks', ' week'], 
        ['s', 's', 'm', 'm', 'h', 'h', 'd', 'd', 'w', 'w'], 
        $carbonObject->diffForHumans()
    );
}
Run Code Online (Sandbox Code Playgroud)

像这样使用它:

$message->getTimeAgo($message->created_at);
Run Code Online (Sandbox Code Playgroud)

输出示例:

  • 2d ago
  • 3w ago

注意: Carbon->diffForHumans()实际上返回3 days ago18 hours ago所以我需要使用str_ireplace函数