2012-08-30 32 views
12

Làm thế nào trong PHP tôi có được định dạng dấu thời gian thông thường trong số ngày MongoDB không?In A MongoDB Ngày Từ PHP

Giả sử tôi có:

$my_date; 
print_r($my_date); 

Các print_r đầu ra là:

MongoDate Object ([sec] => 1346300336 [usec] => 593000) 

Nhưng thực hiện:

echo $my_date; 

Đầu ra:

0.59300000 1346300336 

Thậm chí đã thử:

echo (string)$my_date 

Điều tương tự.

Trả lời

28

$my_date->sec là dấu thời gian unix, sử dụng hàm date() để hiển thị ở định dạng bắt buộc.

echo date('Y-m-d H:i:s', $my_date->sec); 
+2

Không chắc ai là người quyết định ở mức 10Gen, nhưng điều đó gây nhầm lẫn. Không nên gọi thuộc tính 'sec'. Ohh tốt. – Justin

+2

người đó thực sự có một xử lý ở đây trên StackOverflow: http://stackoverflow.com/users/4243/kristina –

2

bạn đang thiếu micro giây.

Để hiển thị (Mông Cổ -> php)

$fecha = date(preg_replace('`(?<!\\\\)u`', $my_date->usec, 'Y-M-d H:i:s.u'), $my_date->sec); 
//MongoDate ISODate("2013-05-28T15:27:24.735Z") 
//Php Date 2013-May-28 10:27:24.735000 

Để gửi tới Mông Cổ (php -> Mongo)

$fecha_mongo = new MongoDate(strtotime($fecha)); 
//Fail function, the short way but, 70000 isn't equal to 700000. 
//$fecha_mongo->usec = (int)$fecha_micro->format("u"); 
preg_match("/\.(.*)/", $fecha, $uSec); 
$fecha_mongo->usec = (int)(count($uSec)==2?$uSec[1]:0); 

//Php Date 2013-May-28 10:27:24.735000 
//MongoDate ISODate("2013-05-28T15:27:24.735Z") 

Good day!

Mario T.

3

Chỉ cần một cập nhật nhanh chóng, để nói rằng MongoDate có một phương pháp toDateTime kể từ phiên bản 1.6 của phần mở rộng PECL. Bây giờ bạn có thể làm

$mongoDate->toDateTime()->format(...)