PHP Carbon错误地格式化UNIX时间戳

时间:2017-10-17 09:20:50

标签: php laravel unix php-carbon

我从URL中收到一个UNIX时间戳,如下所示:

/api/v1/order_variations/60?d=1508364000000

当我检索并尝试将时间戳转换为可读格式时,Carbon会输出错误的日期。

$timestamp = (int)$request->input('d');
$date = Carbon::createFromTimestamp($timestamp)->format('j F, Y');
dd($date);

$ timestamp 的值为 1508364000000

碳将此转换为“2月25日,49768”,但它应“2017年10月19日”

如果我使用:

Carbon::createFromTimeStampUTC($timestamp)->toDateTimeString(); 

我得到了相同的结果。

任何想法我可能做错了什么?

1 个答案:

答案 0 :(得分:2)

Unix时间戳是自纪元(1970年1月1日)以来的数量,但您使用的是毫秒数。只需将值除以1000即可获得秒数。

$timestamp = (int)$request->input('d');
$timestamp = intval($timestamp / 1000); // convert milliseconds to seconds

这导致价值" 2017年10月18日22:00:00"。获得价值的唯一途径" 2017年10月19日"从这里可以使用+02:00偏移的时区(CEST?SAST?Africa / Johannesburg?)。