【问题标题】:Php Mongodate Converting Date to 1970Php Mongodate 将日期转换为 1970
【发布时间】:2016-04-06 15:00:12
【问题描述】:

大家好,我将日期存储在 mongodb 中。我面临的问题是我得到的日期时间字符串。我尝试将其转换为 mongodate,但它会将其转换为 0.00000000 2016。这是代码

 $params['start'] = new MongoDate($params['start']);
        $params['end'] = new MongoDate($params['end']);

字符串以2016-04-07 19:49:50 的形式带来日期时间,但转换后变为0.00000000 2016。请告诉我我做错了什么

【问题讨论】:

    标签: php mongodb mongodate


    【解决方案1】:

    Per the docs,MongoDate 需要像 1460058590 这样的时间戳值,而不是像 2016-04-07 19:49:50 这样的字符串。

    $params['start'] = new MongoDate(strtotime($params['start']));
    

    【讨论】:

    • 我在做这个日期之前像这样转换日期('Y-m-d H:i:s' , strtotime($startD))
    • 然后你可以删掉这一步,只使用“new MongoDate(strtotime($startD))”,它将完成与此答案相同的概念:使用时间戳。
    • @garden "医生,我这样做的时候很痛!" “嗯,别这样了。”并阅读文档。
    • @garden 我们不需要更多代码。我们已经解释了您的问题和解决方法。您的 MongoDate 调用需要传递一个有效的 UNIX 时间戳。
    【解决方案2】:

    MongoDate constructor 需要以 Unix 纪元秒为单位的时间,而不是时间字符串。

    public MongoDate::__construct ([ int $sec = time() [, int $usec = 0 ]] )

    您需要使用strtotimeDateTime 转换您的时间字符串。构造函数文档中的示例代码甚至包括一个示例:

    $d = new MongoDate(strtotime("2009-05-01 00:00:01"));
    echo "$d\n";
    

    【讨论】:

    • 领先你四秒,但你的更好。 :-p 投赞成票。
    猜你喜欢
    • 2016-11-23
    • 2017-04-28
    • 2012-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-06
    • 2011-10-14
    • 2010-12-12
    相关资源
    最近更新 更多