【问题标题】:How to extract timestamp from MongoDB object如何从 MongoDB 对象中提取时间戳
【发布时间】:2017-09-16 04:34:36
【问题描述】:

在我的 php 应用程序中,我执行了一个从 mongodb 返回一堆文档的数据库查询。当我遍历每个文档时,我试图提取时间戳并将其显示为 Y-M-d h:i:s 格式。但目前我什至不确定如何提取它。

我正在使用以下代码进行测试:

    var_dump($value->playbook_run_date);

输出/返回这个:

object(MongoDB\BSON\UTCDateTime)#9 (1) {
  ["milliseconds"]=>
  string(13) "1486277081000"
}

我尝试将代码更改为如下所示:

  var_dump($value->playbook_run_date['milliseconds']);

但这会返回错误:

不能使用 MongoDB\BSON\UTCDateTime 类型的对象作为数组

我一直在搜索该错误并尝试了一些示例,包括:

var_dump($value->playbook_run_date->{'milliseconds'});
var_dump($value->playbook_run_date->1->{'milliseconds'});
var_dump($value->playbook_run_date[1]->{'milliseconds'});

但我似乎无法弄清楚。 任何帮助将不胜感激。

【问题讨论】:

    标签: php mongodb mongodb-query


    【解决方案1】:

    具有数字名称的对象属性需要作为用大括号括起来的字符串来引用:

     var_dump($value->playbook_run_date->{'1'}['milliseconds']); // If 'milliseconds is an array key
     var_dump($value->playbook_run_date->{'1'}->milliseconds); // If milliseconds is an object property
    

    【讨论】:

    • 我尝试了这两个示例,它们返回“未定义属性”错误消息
    【解决方案2】:

    我找到了答案。 http://php.net/manual/en/mongodb-bson-utcdatetime.todatetime.php

    代码如下:

    $temp = $value->playbook_run_date->toDateTime();
    echo ("<td>".$temp->format('r') ."</td>");
    

    【讨论】:

      【解决方案3】:

      试试

      $value->playbook_run_date->__toString();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-21
        • 2012-05-20
        • 2015-01-10
        • 2016-08-10
        • 2020-07-07
        • 2019-06-10
        相关资源
        最近更新 更多