2011-09-16 38 views
12

Tôi đang cố thay đổi định dạng ngày tháng tôi nhận được từ cơ sở dữ liệu Mongo của mình. Hiện tại chúng trông giống như sau:Làm cách nào để định dạng ngày từ Mongoose trong Node.js?

Fri Sep 16 2011 19:05:17 GMT+0900 (JST) 

Tôi đã thử gọi số .toString('yyyy-MM-dd') trên chúng nhưng không có gì thay đổi. Tôi không biết chúng có phải là các đối tượng Date hay chỉ các chuỗi thô.

Tôi đã thử kiểm tra sổ tay Mongoose và googling một bó, nhưng không tìm thấy bất cứ điều gì được nêu ra.

Bất kỳ ý tưởng nào?

Trả lời

13

bạn phải tạo một ngày đối tượng đầu tiên:

var date = new Date(dateStr); // dateStr you get from mongodb 

var d = date.getDate(); 
var m = date.getMonth()+1; 
// ... 
6

gì về việc xác định sơ đồ của bạn như:

var someSchema = new Schema({ 
    title: String, 
    created: Date 
}); 

s.t. ngày được lưu trữ dưới dạng đối tượng Date trong mongoDB của bạn. Do đó, khi bạn đọc lại, bạn sẽ có đối tượng Date thích hợp để bạn có thể làm việc với các phương pháp có sẵn.

+0

Nghe có vẻ như là thiên tài điên rồ. Tôi sẽ phải thử. –

+0

@BenHumphreys đã làm việc cho tôi :) – Juri

13

Cách hiện đại để thực hiện việc này là sử dụng momentjs, cả hai đều có thể sử dụng trong nút và trong trình duyệt, cực kỳ hữu ích và dễ sử dụng. Đối với vấn đề hiện tại, tôi đã giải quyết nó như thế này trong nút sau khi tuân thủ tất cả các yêu cầu của tài liệu:

var moment = require('moment'); 
var fomatted_date = moment(photo.date_published).format('YYYY-DD-MM'); 

với photo.date_published trực tiếp đến từ mongoose.

+0

'YYYY-DD-MM' phải là' YYYY-MM-DD' –

Các vấn đề liên quan