Format a date from inside a Handlebars Template in Meteor

后端 未结 1 561
独厮守ぢ
独厮守ぢ 2020-12-23 10:10

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 m         


        
相关标签:
1条回答
  • 2020-12-23 10:41

    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: "ffffdd 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!

    0 讨论(0)
提交回复
热议问题