2015-05-26 16 views
6

này được stumping tôi ... Tôi đang sử dụng ví dụ chính xác từ:Hàm MongoDate toDateTime() không được xác định?

http://php.net/manual/en/mongodate.todatetime.php

nhưng tôi nhận được:

PHP Fatal error: Call to undefined method MongoDate::toDateTime()

<?php 
$d = new MongoDate(strtotime("2014-11-18 11:01:25")); 
var_dump($d); 
var_dump($d->toDateTime()); 
?> 

Kết quả chính xác tôi nhận được là:

object(MongoDate)#1 (2) { 
    ["sec"]=> 
    int(1416330085) 
    ["usec"]=> 
    int(0) 
} 
PHP Fatal error: Call to undefined method MongoDate::toDateTime() in /xxx/testmongodate.php on line 5 

Phiên bản PHP:

$ php -v 
PHP 5.5.9-1ubuntu4.9 (cli) (built: Apr 17 2015 11:44:57) 
Copyright (c) 1997-2014 The PHP Group 
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies 
    with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies 

PHP cấu hình:

$ php -i | grep mongo 
/etc/php5/cli/conf.d/20-mongo.ini, 
mongo 
mongo.allow_empty_keys => 0 => 0 
mongo.chunk_size => 262144 => 262144 
mongo.cmd => $ => $ 
mongo.default_host => localhost => localhost 
mongo.default_port => 27017 => 27017 
mongo.is_master_interval => 15 => 15 
mongo.long_as_object => 0 => 0 
mongo.native_long => 0 => 0 
mongo.ping_interval => 5 => 5 

tôi đã được sử dụng thành công việc cài đặt này để chèn vào và đọc từ một cơ sở dữ liệu Mongo thực tế, nhưng bây giờ tôi đang cố gắng để làm việc với các đối tượng MongoDate khi chúng được đọc ra của mongo, cố gắng định dạng chúng để chèn vào cơ sở dữ liệu khác ... đó là lý do tại sao tôi đang tìm cách sử dụng phương pháp này ... nhưng nó dường như không được tìm thấy ... ??

$ uname -a 
Linux server1 3.13.0-52-generiC#86-Ubuntu SMP Mon May 4 04:32:59 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux 
+1

Phiên bản PECL của bạn như thế nào? 'PECL mongo> = 1.6.0' – Scuzzy

+0

không chính xác chắc chắn làm thế nào để kiểm tra, nhưng đã làm điều này: $ pecl phiên bản PEAR Phiên bản: 1.9.4 Phiên bản PHP: 5.5.9-1ubuntu4.9 Phiên bản Zend Engine: 2.5.0 Chạy trên: Linux server1 3.13.0-52-generiC# 86-Ubuntu SMP Thứ Hai 4 tháng 5 04:32:59 UTC 2015 x86_64 – Wes

+2

'danh sách pecl' phải là lệnh liệt kê các gói đã cài đặt và các phiên bản của chúng. nếu nó trả về một phiên bản cũ hơn 1.6.0 thì giả định của tôi sẽ là gói được cài đặt đơn giản là thiếu chức năng đó. – Scuzzy

Trả lời

0

Đối với bất kỳ ai đến câu hỏi này muộn (như tôi đã làm), vấn đề có khả năng là PHP đang sử dụng trình điều khiển Mongo khác. Hiện tại có 2 và mã dưới đây dành cho trình điều khiển cũ. Giải pháp với trình điều khiển cũ là lấy ngày từ Ngày Mongo bằng chức năng ngày PHP:

<?php 
$d = new MongoDate(strtotime("2014-11-18 11:01:25")); 
$newdate = date('Y-m-d H:m:s',$d->sec); 
var_dump($newdate); 
?> 
Các vấn đề liên quan