Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Carbon create from timestamp

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>
like image 344
LeBlaireau Avatar asked Mar 10 '23 05:03

LeBlaireau


2 Answers

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
like image 85
Matt K Avatar answered Mar 14 '23 14:03

Matt K


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.

like image 25
LeBlaireau Avatar answered Mar 14 '23 13:03

LeBlaireau