当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何在PHP中将/Date(1490914800000+0100)/格式的日期转换为mysqldatetime格式?》经验,为你挑选了1个好方法。

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

$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.

Tim Biegelei.. 5

这个SO问题很好地涵盖了一种方法,即使用该DateTime()函数将时间从纪元转换为日期,然后使用format().但是你的数据有两点需要注意.首先,你似乎有一个自纪元以来的毫秒,需要转换为秒.其次,你还有一个时区的转换,以小时为单位,标记到最后.我将你的$datef字符串分成两部分,epoch和timezone,然后到达epoch以来的秒数.

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沙盒



1> Tim Biegelei..:

这个SO问题很好地涵盖了一种方法,即使用该DateTime()函数将时间从纪元转换为日期,然后使用format().但是你的数据有两点需要注意.首先,你似乎有一个自纪元以来的毫秒,需要转换为秒.其次,你还有一个时区的转换,以小时为单位,标记到最后.我将你的$datef字符串分成两部分,epoch和timezone,然后到达epoch以来的秒数.

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沙盒

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有