Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I get the difference of time in human readable format with Laravel 5?

I want to display the difference between the current date and time with the one stored in the updated_at column. However, I want it to be human-friendly like:

53 mins ago 2 hours ago 3 days ago 

Is there a function out there that I could use to make it easier?

To be sure that you understand me, let's say I have a column (updated_at) in my database which is equal to 2015-06-22 20:00:03 and the current time is 20:00:28. Then I'd like to see:

25 mins ago 

When it's higher than 59 minutes, I want to show only hours and when it's higher than 24 hours I'd like to see how many days ago.

like image 383
Matthieu Boisjoli Avatar asked Jun 23 '15 00:06

Matthieu Boisjoli


People also ask

What is laravel default date format?

Database should be always YYYY-MM-DD; Laravel back-end: in forms/views we should have whatever format client wants, but while saving to database it should be converted to YYYY-MM-DD; JavaScript datepicker: JS formats for dates are not the same as PHP formats, we will see that below in the example.


2 Answers

By default, Eloquent converts created_at and updated_at columns to instances of Carbon. So if you are fetching the data using Eloquent, then you can do it as below.

$object->updated_at->diffForHumans(); 

If you want to customize the fields that will be mutated automatically, then within your model, you can customize them as you wish.

// Carbon instance fields protected $dates = ['created_at', 'updated_at', 'deleted_at']; 
like image 52
Burak Avatar answered Sep 23 '22 02:09

Burak


incase of the date is in a string format, use laravel Carbon; e.g,

 {{ \Carbon\Carbon::parse($on_revision->assignment->deadline)->diffForhumans() }} 

Notice how I wrap my string in the carbon::parse()

like image 43
Wainaina Nik Avatar answered Sep 23 '22 02:09

Wainaina Nik