2011-09-16 165 views
12

Estoy tratando de cambiar el formato de las fechas que obtengo de mi base de datos de Mongo. Actualmente se ven así:¿Cómo puedo formatear las fechas de Mongoose en Node.js?

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

He intentado llamar .toString('yyyy-MM-dd') en ellos, pero nada cambia. No sé si son objetos Date o simplemente cadenas sin formato.

He intentado consultar el manual de Mongoose y buscar en Google, pero aún no he encontrado nada.

¿Alguna idea?

Respuesta

13

usted tiene que crear primero un objeto Date:

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

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

¿qué pasa con la definición de su esquema como:

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

S.T. la fecha se almacena como un objeto Date en su mongoDB. Como resultado, cuando lo leas, tendrás un objeto Date adecuado en el que puedes trabajar con los métodos disponibles.

+0

Eso suena como un genio loco. Tendré que intentarlo. –

+0

@BenHumphreys funcionó para mí :) – Juri

13

Una forma moderna de hacer esto es usar momentjs, ambos utilizables en el nodo y en el navegador, súper útiles y fáciles de usar. Para el problema actual lo resolví como este en el nodo después de seguir todos los requisitos docs:

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

con photo.date_published que viene directamente de la mangosta.

+0

'YYYY-DD-MM' debería ser' YYYY-MM-DD' –

Cuestiones relacionadas