Format a date from inside a Handlebars Template in Meteor Format a date from inside a Handlebars Template in Meteor javascript javascript

Format a date from inside a Handlebars Template in Meteor


The solution is quite simple, and maybe someone will find it useful.In most projects you have a couple of date formats you want to use.So it's a good approach to define your formats with readable names.

For this example I took just 'short' and 'long', but you will see, it's very easy to extend.

So I created an Object in my Client Script:

var DateFormats = {       short: "DD MMMM - YYYY",       long: "dddd DD.MM.YYYY HH:mm"};

Also, I created a Handlebars Helper "formatDate".

Edited: Now you should use UI instead of Handlebars

// Deprecated since version 0.8.0 Handlebars.registerHelper("formatDate", function(datetime, format) {// Use UI.registerHelper..UI.registerHelper("formatDate", function(datetime, format) {  if (moment) {    // can use other formats like 'lll' too    format = DateFormats[format] || format;    return moment(datetime).format(format);  }  else {    return datetime;  }});

As you can see, I use the moment.js lib in my Helper. To install it, just type meteor add momentjs:moment from your command line.

And now, everywhere in my Templates I can use it with the two params, like this:

{{formatDate MyISOString "short"}} // 02 September - 2013{{formatDate MyISOString "long"}} //  Monday 02.09.2013 18:00

If you want to create your own formats, take a look at the momentjs docs http://momentjs.com/docs/

Happy coding!