php微秒转换为DateTime并返回
我已经存在微秒timestamp = 1484923604957
,我想创建DateTime对象或只是日期,然后在表db中设置列created_at - datetime
。我不想在数据库中更改类型字段。现在,我转换成日期这样php微秒转换为DateTime并返回
$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(或日期),用微秒回微秒?
您需要将数据库字段类型更改为created_at - DATETIME
更改为DATETIME(6)
微秒。没有这一点,你不会得到精确的时间在微秒,因为它不会被存储在数据库中。
如果使用微秒创建对象,则可以使用$dateTime->format('u')
将对象转换为微秒。请参阅the documentation for date。
微秒(在PHP 5.2.2中添加)。请注意,date()将始终生成000000,因为它需要一个整数参数,而DateTime :: format()确实支持微秒,如果DateTime是以微秒创建的。
在db'2017-01-20 14 :46:44.000000'然后'$ dateTime-> format('u')=>结果= 000000'但需要像'timestamp = 1484923604957' –
如果你想要一个纪元时间戳,那么你可以使用'format('U')' – nvisser
我有type''created_at' datetime NOT NULL,'它是什么类型DATETIME(6)以及如何更改? –
@ shuba.ivan参考这里http://stackoverflow.com/questions/26299149/timestamp-with-a-millisecond-precision-how-to-save-them-in-mysql –