44

我从我的数据中获得了一个 ISO 格式的日期,而我真正想做的是直接从我的模板中修改我的日期格式。

像这样:

{{format my.context.date "myFormat"}}

我正在使用 moment 库,所以我可以写这样的东西:

{{formatDate my.context.date "DD.MM.YYYY HH:mm"}} // 03.09.2013 18:12

这会很好,因为我认为这是我应该能够做到这一点的地方。在我的模板中。

4

1 回答 1

102

解决方案非常简单,也许有人会发现它很有用。在大多数项目中,您有几种要使用的日期格式。因此,用可读的名称定义格式是一种很好的方法。

对于这个例子,我只使用了“short”和“long”,但你会看到,它很容易扩展。

所以我在我的客户端脚本中创建了一个对象:

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

另外,我创建了一个 Handlebars Helper “formatDate”。

编辑:现在你应该使用 UI 而不是 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;
  }
});

如您所见,我在 Helper 中使用了 moment.js 库。要安装它,只需meteor add momentjs:moment从命令行键入。

现在,在我的模板中的任何地方,我都可以将它与两个参数一起使用,如下所示:

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

如果您想创建自己的格式,请查看 momentjs 文档http://momentjs.com/docs/

快乐编码!

于 2013-09-03T16:18:49.447 回答