Using Carbon to return a human readable datetime difference

BigJobbies picture BigJobbies · Jun 23, 2013 · Viewed 78.4k times · Source

I'm using Laravel 4 to create my project.

I am currently building the comments section and I want to display how long ago the post was created, kind of like Facebook's '10 mins ago' & '2 weeks ago' etc.

I have done a little bit of research and found that a package called Carbon can do this.

After reading the Laravel doc's, it says:

By default, Eloquent will convert the created_at, updated_at, and deleted_at columns to instances of Carbon, which provides an assortment of helpful methods, and extends the native PHP DateTime class.

But when I return a date column that I have created, it doesn't display it like on Facebook.

The code that I'm using is:

return array('time');

Has any body used this Carbon package that could give me a hand in doing what I need, I'm quite confused.

Answer

Ifan Iqbal picture Ifan Iqbal · May 22, 2014

By default, Eloquent will convert the created_at, updated_at, and deleted_at columns to instances of Carbon. So, your code should be just like this:

$comment->created_at->diffForHumans();

It's very cool. It'll produce string like 2 minutes ago or 1 day ago. Plurar or singular, seconds, minutes, hours, days, weeks, or years, it runs automatically. I've tested it on Laravel version 4.1.24.