Reputation: 17467
I am trying to convert some dates
<p>{{ Carbon\Carbon::parse($post->created_at)->diffForHumans() }}</p>
This works fine as the date is in the format 2017-05-01 10:52:51
However I also have the dates stored as unix timestamps.
How can I covert these to a date?
I already tried
{{ Carbon\Carbon::createFromTimestamp($post->created_at)->toDateTimeString() }}
Error - A non well formed numeric value encountered
The dump is
<pre class="xdebug-var-dump" dir="ltr">
<small>int</small>
<font color="#4e9a06">1493637826</font>
</pre>
Upvotes: 5
Views: 22255
Reputation: 6708
Your first attempt using createFromTimestamp()
is correct, so there must be something wrong with your input. Here is a working example:
>>> \Carbon\Carbon::createFromTimestamp(1493637826)->toDateTimeString();
=> "2017-05-01 11:23:46"
The error you encountered suggests you're passing in a DateTime string, not a unix timestamp:
>>> \Carbon\Carbon::createFromTimestamp('2017-05-01 11:23:46')->toDateTimeString();
PHP Notice: A non well formed numeric value encountered
Upvotes: 8
Reputation: 17467
In the end I had to use gmdate to convert the timestamp.
{{ Carbon\Carbon::parse(gmdate("Y-m-d\TH:i:s", $post->date_posted))->diffForHumans() }}
It is strange because it should work the way Robbie Averill suggested.
Upvotes: 1