naivedeveloper naivedeveloper - 4 months ago 26
Node.js Question

How can I format a date coming from MongoDB?

I'm using Jade to render my views from within Express.js. I am saving documents in MongoDB and using Mongoose to access my documents. I am saving a default date created when a new document is created and I am returning that date created attribute to the view, where is needs to be formatted. The format of the date being stored within MongoDB is:

Thu Dec 29 2011 20:14:56 GMT-0600 (CST)


My question is: How do I format this date in Jade (or Mongoose or Node.JS) coming back from MongoDB?

Answer

JavaScript has built-in support for dates. First, to get your string into a Date object:

date =  new Date('Thu Dec 29 2011 20:14:56 GMT-0600 (CST)')

Now you can use various methods on the date to get the data you need:

date.toDateString() // "Thu Dec 29 2011"
date.toUTCString()  // "Fri, 30 Dec 2011 02:14:56 GMT"
date.getMonth()     // 11
date.getDate()      // 29
date.getFullYear()  // 2011

You can see more methods on the MDN reference site. You can use these methods to build any kind of string you want.

For more robust date/time parsing, formatting, and manipulation, you should definitely check out Moment.js as mentioned by s3v3n in another answer.