PHP的正确时间转换

时间:2014-08-28 23:49:44

标签: php mysql datetime time converter

在Google API的json结果中获得以下时间:

2014-08-25T20:02:24.000Z

如何为MySQL datetime字段转换和准备它?

3 个答案:

答案 0 :(得分:3)

$dateTime=new DateTime('2014-08-25T20:02:24.000Z');
echo $dateTime->format('Y-m-d H:i:s') ;

输出为

2014-08-25 20:02:24 mysql DATETIME format

答案 1 :(得分:1)

作为一个简单的ISO 8601表示,它是almost what MySQL understands。唯一有问题的问题是" Z"因为MySQL不支持时区,也不会忽略" Z"。

因此,只需稍微修改一下格式(这不是所有日期的通用解决方案,但 为此问题提供有效的解决方案,当日期未在SQL之前使用或检查时);

$iso = "2014-08-25T20:02:24.000Z";      // literal JSON text
$iso = preg_replace("/Z$/", "", $iso);  // -> "2014-08-25T20:02:24.000"

将其像普通话一样(with placeholders)插入MySQL;

$msqli_stmt->bind_param("s", $iso);
$pdo_stmt->bindValue(":dt", $iso);

考虑这个SQL示例;

create table x (y datetime)
insert into x (y) values ('2014-08-25T20:02:24.000')
select * from x
--> August, 25 2014 20:02:24+0000

答案 2 :(得分:1)

这是ISO 8601 date。您可以使用以下命令将其直接转换为DateTime对象。

$date = new DateTime('2014-08-25T20:02:24.000Z');

或者与strtotime()的经典PHP时间函数一起使用的时间戳:

$time = strtotime('2014-08-25T20:02:24.000Z');

一旦你有了它,只需将其转换为MySQL使用的格式Y-m-d H:i:s,使用其中一种:

$to_mysql = $date->format('Y-m-d H:i:s');
$to_mysql = date('Y-m-d H:i:s', $time);