UTCDateTime :: toDateTime()方法returnig 1970 datetime

时间:2016-11-08 22:31:33

标签: php mongodb

我看到UTCDateTime对象有些奇怪:

$dt = new UTCDateTime(time());
var_dump($dt);

输出:

object(MongoDB\BSON\UTCDateTime)#208 (1) {
  ["milliseconds"]=>
  int(1478644003)
}

好的,所以这个时间戳是2016年11月8日。

但是当我做以下事情时:

var_dump($dt->toDateTime());

输出:

object(DateTime)#206 (3) {
  ["date"]=>
  string(26) "1970-01-18 02:44:04.105000"
  ["timezone_type"]=>
  int(1)
  ["timezone"]=>
  string(6) "+00:00"
}

日期重置为1970 :(这可能是什么原因?我是否正确使用这些对象?它应该是UTCDateTime的DateTime表示 - http://php.net/manual/en/mongodb-bson-utcdatetime.todatetime.php

1 个答案:

答案 0 :(得分:0)

为您的代码选择任何一步

步骤1:

new MongoDB\BSON\UTCDateTime( (int) $timestamp * 1000 );

第2步:

您可以使用以下功能代替直接分配。示例: mongoDate('1542957787');

function mongoDate( $timestamp = '' ) {

    if ( empty($timestamp) && $timestamp != 0 ) {
        return false;
    }


    if ( strlen( (string) $timestamp ) == 13 ) { // timestamp length in MilliSeconds
        return new MongoDB\BSON\UTCDateTime( (int) $timestamp );
    }

    return new MongoDB\BSON\UTCDateTime( (int) $timestamp * 1000 );

}