php微秒转换为DateTime并返回

时间:2017-02-20 10:00:06

标签: php mysql datetime

我存在微秒timestamp = 1484923604957并且我想创建DateTime对象或只是日期,然后在表中使用列created_at - datetime在db中设置。我不想在DB中更改类型字段。现在我转换为像这样的日期

        $seconds = $mil / 1000;
    return date("Y-m-d H:i:s", $seconds);

并且在DB中有2017-01-20 14:46:44

然后获得没有微秒的日期

created_at = "2016-12-29 14:42:05"

我创建了DateTime

        $dateTimeClass = date_create_from_format('Y-m-d H:i:s', $date);
    return $dateTimeClass;

并作出回应

   $dateTimeClass->getTimestamp()*1000

这是最后一微秒

如何正确转换为DatTime(或日期),微秒并返回微秒?

2 个答案:

答案 0 :(得分:0)

您需要将created_at - DATETIME的db字段类型更改为DATETIME(6)微秒。如果没有它,你将无法得到精确的时间,以微秒为单位,因为它不会存储在数据库中。

答案 1 :(得分:0)

如果使用微秒创建对象,则可以使用$dateTime->format('u')将对象转换为微秒。请参阅the documentation for date

  

微秒(在PHP 5.2.2中添加)。请注意,date()将始终生成000000,因为它采用整数参数,而DateTime :: format()确实支持微秒,如果使用微秒创建DateTime。