如何在PHP中将/ Date(1490914800000 + 0100)/格式的日期转换为mysql datetime格式?

时间:2017-01-26 04:08:19

标签: php mysql datetime

我试图通过提取数字部分来解决它,然后使用日期函数对其进行解析。但它告诉我一些旧日期,我猜这是不正确的。

$datef = "1490914800000+0100";
$adada = date('Y-m-d H:i:s', $datef);
// Gives date 1987-10-13 18:31:28 which is an old date. Please suggest.

2 个答案:

答案 0 :(得分:5)

this SO question涵盖的一种方法是使用DateTime()函数将时间从纪元转换为日期,然后使用format()显示此日期。但是你的数据有两点需要注意。首先,你似乎有一个自纪元以来的毫秒,需要转换为秒。其次,你还有一个时区的转换,以小时为单位,标记到最后。我将你的$datef字符串拆分为两个部分,即纪元和时区,然后达到自纪元以来的秒数。

list($epoch, $timezone) = explode('+', $datef);

$epoch = ($epoch / 1000) + (substr($timezone, 0, 2)*60*60) +
         (substr($timezone, 2, 2)*60);
$dt = new DateTime("@$epoch");
echo $dt->format('Y-m-d H:i:s');

<强>输出:

2017-03-31 00:00:00

在这里演示:

PHP Sandbox

答案 1 :(得分:2)

时间似乎是以毫秒为单位。 您可以将时区移位添加到秒。 1小时= 3600秒。

$milliSeconds = intval("1490914800000");
$seconds = $milliSeconds/1000;
$date = date("Y-m-d H:i:s", $seconds);