How do I format dates from Mongoose in Node.js?


I'm trying to change the format of the dates I'm getting from my Mongo database. Currently they look like this:

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

I've tried calling .toString('yyyy-MM-dd') on them but nothing changes. I don't know if they're Date objects or just raw strings.

I've tried checking the Mongoose manual and googling a bunch, but not found anything yet.

Any ideas?

9/16/2011 10:10:07 AM

Accepted Answer

you have to create a Date object first:

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

var d = date.getDate();
var m = date.getMonth()+1;
// ...
9/16/2011 10:48:00 AM

A modern way to do this is to use momentjs, both usable in node and in the browser, super useful and simple to use. For the current problem I solved it like this in node after following all the docs requirements :

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

with photo.date_published directly coming from mongoose.

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow