Create an account

Very important

  • To access the important data of the forums, you must be active in each forum and especially in the leaks and database leaks section, send data and after sending the data and activity, data and important content will be opened and visible for you.
  • You will only see chat messages from people who are at or below your level.
  • More than 500,000 database leaks and millions of account leaks are waiting for you, so access and view with more activity.
  • Many important data are inactive and inaccessible for you, so open them with activity. (This will be done automatically)


Thread Rating:
  • 669 Vote(s) - 3.42 Average
  • 1
  • 2
  • 3
  • 4
  • 5
How can I format a date coming from MongoDB?

#1
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?**
Reply

#2
Actually, you don't need another attribute in your Mongoose schema to store the creation date, as the `_id` has that information. Instead, you can create a [virtual][1] on your Mongoose schema, like this:

YourSchema.virtual('date')
.get(function() {
return this._id.generationTime;
});

That would return the raw Javascript date as the `.date` attribute for each document.

Then you can take that one step further and format the date you way you want to in that virtual:

YourSchema.virtual('date')
.get(function() {
return this._id.generationTime.toDateString();
});

[1]:

[To see links please register here]

Reply

#3
I had exactly this requirements (expressjs, mongoose, jade) and this is how I solved it for myself.

First of all I installed [momentjs][1] with `npm install moment`.
Then I passed moment to view using this:

var moment = require('moment');

app.get('/', function(req, res){
// find all jobs using mongoose model
Job.find().exec(function(err, items){
// pass moment as a variable
res.render('status', { 'jobs': items, moment: moment });
})
});

Then using it like this in Jade:

table
tr
td Subject
td Posted at
td Status
each job, i in jobs
tr
td #{job.subject}
td #{moment(job.postedAt).format("YYYY-MM-DD HH:mm")}
td #{job.status}



[1]:

[To see links please register here]

Reply

#4
I guess you haven't tried the easy way?

#{storeddate.toDateString()}
Reply

#5
My solution is:

Add [momentjs](

[To see links please register here]

) to your express application locals like this:
`app.locals.moment = require('moment');`

Then you can use moment in any jade files:
`span='(Created at: ' + moment(obj.createTime).format("YYYY/MM/DD") + ')'`

Reference:
[Making use of utility libraries in server-side Jade templates](

[To see links please register here]

)
Reply

#6
Here's an example on how can do that (Using EJS)

<%

var monthNames = [
"January", "February", "March",
"April", "May", "June", "July",
"August", "September", "October",
"November", "December"
];

var d = post.date.getDate();
var m = monthNames[post.date.getMonth()];
var y = post.date.getFullYear();

%>

Now You Can Use These Variables Like This...

<small style="color: red"><%= post.date %></small>

Source:

[To see links please register here]

Reply

#7
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](

[To see links please register here]

). 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](

[To see links please register here]

) as mentioned by s3v3n in another answer.
Reply

#8
very easy method steps-

1. install via npm moment --save

2. declare var moment = require('moment');

3. define the declare variable in res.render'filename.ejs',{moment: moment});

4. put this ejs in your view file <%= moment(data.column_name_of_your_date).format( 'DD MMM YYYY'); %>

output is --
09 Jun 2017

you can changed the format check it out in moment link for different format

[To see links please register here]

Reply



Forum Jump:


Users browsing this thread:
1 Guest(s)

©0Day  2016 - 2023 | All Rights Reserved.  Made with    for the community. Connected through