I got a ISO formatted Date from my Data and what I actually want to do, is to modify my date format directly from my Templates.
like this:
{{format my.context.date "myFormat"}}
I'm using the moment library, so I could write something like this:
{{formatDate my.context.date "DD.MM.YYYY HH:mm"}} // 03.09.2013 18:12
It would be nice, because I think it's the place where I should be able to do this. In my template.
Handlebars doesn't allow you to write JavaScript directly within templates. Instead, it gives you helpers. These are JavaScript functions that you can call from your templates, and help you reuse code and create complex templates. To call a helper, just use it as an expression - {{helpername}} .
The preferred Javascript date formats are: Dates Only — YYYY-MM-DD. Dates With Times — YYYY-MM-DDTHH:MM:SSZ.
Define the template that is packed with handlebars JavaScript syntax. Compile the template with handlebars JavaScript compile method. Provide the data context i.e. data from server-side in a form of JSON to map to the template. Insert or append the final HTML into your designated DOM location of the HTML page.
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!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With