碳从时间戳创建

LeB*_*eau 4 php date laravel php-carbon

我正在尝试转换一些日期

<p>{{  Carbon\Carbon::parse($post->created_at)->diffForHumans()  }}</p>
Run Code Online (Sandbox Code Playgroud)

这工作正常,因为日期的格式为2017-05-01 10:52:51

但是,我也将日期存储为 unix 时间戳。

我怎样才能将这些转换为约会对象?

我已经试过了

{{  Carbon\Carbon::createFromTimestamp($post->created_at)->toDateTimeString()  }}
Run Code Online (Sandbox Code Playgroud)

错误 - 遇到格式不正确的数值

转储是

 <pre class="xdebug-var-dump" dir="ltr">
<small>int</small> 
<font color="#4e9a06">1493637826</font>
    </pre>
Run Code Online (Sandbox Code Playgroud)

Mat*_*t K 5

您第一次尝试使用createFromTimestamp()是正确的,因此您的输入肯定有问题。这是一个工作示例:

>>> \Carbon\Carbon::createFromTimestamp(1493637826)->toDateTimeString();
=> "2017-05-01 11:23:46"
Run Code Online (Sandbox Code Playgroud)

您遇到的错误表明您传入的是 DateTime 字符串,而不是 unix 时间戳:

>>> \Carbon\Carbon::createFromTimestamp('2017-05-01 11:23:46')->toDateTimeString();
PHP Notice:  A non well formed numeric value encountered
Run Code Online (Sandbox Code Playgroud)


LeB*_*eau 1

最后我不得不使用 gmdate 来转换时间戳。

{{  Carbon\Carbon::parse(gmdate("Y-m-d\TH:i:s", $post->date_posted))->diffForHumans()  }}
Run Code Online (Sandbox Code Playgroud)

这很奇怪,因为它应该按照 Robbie Averill 建议的方式工作。