在模板中显示格式化的时间戳

时间:2012-09-11 03:32:54

标签: node.js meteor

如何格式化模板中的时间戳?我按照建立聊天的教程进行操作。现在我扩展了聊天功能,例如删除消息并将时间放在消息前面。但是当我在模板中写{{timestamp}}时,会给出一个UNIX时间戳。我如何格式化它以显示时间,如'6:12'。时间戳存储在Messages集合中。

是否适合操纵

内的时间戳

Template.Messages.created = function ( ) { ... }

功能

提前致谢。

5 个答案:

答案 0 :(得分:4)

虽然在这种情况下不是必需的,但我建议使用Moment.js,这样可以轻松地在Javascript中处理日期和时间。

您可以从Atmosphere安装软件包或将script下载到client目录中,然后使用类似下面的帮助程序: -

Template.Messages.helpers({
    created: function() { 
        var time = moment(this.timestamp);
        return time.format('h:mm a');
    }
}); 

NB:我假设timestamp是上下文对象的var。

答案 1 :(得分:1)

我使用这个库。它为您提供了所需的所有日期格式。使用meteor只需将其放入,您就可以在任何助手中使用它来返回格式化的日期。

http://stevenlevithan.com/assets/misc/date.format.js

答案 2 :(得分:1)

如果你想避免库和使用Javascript Date对象操作我会建议(这假设日期是ISO格式2010-06-15T00:00:00,你可以从Date.toISOString()得到):< / p>

实现格式化方法(感谢JavaScript equivalent to printf/string.format),把它放在lib / utils.js中:

String.prototype.format = function(args, index) {
  return this.replace(/{(\w+)}/g, function(match, number) {
    return typeof args[index[number]] != 'undefined'
      ? args[index[number]]
      : match
    ;
  });
};

创建帮助程序(将其放入client / client.js)

Handlebars.registerHelper('formatDate',function(input, pattern){
    var iso = /^(\d{4})(?:-?W(\d+)(?:-?(\d+)D?)?|(?:-(\d+))?-(\d+))(?:[T ](\d+):(\d+)(?::(\d+)(?:\.(\d+))?)?)?(?:Z(-?\d*))?$/;
    if(this[input]) {
        var parts = this[input].match(iso);
             return pattern.format(parts, {yyyy:1,MM:4,dd:5,hh:6,mm:7,ss:8,SSS:9});
        }
    return this[input];
});

使用帮助者:

{{#each logs}}
   <tr>
      <td>{{formatDate 'ts' '{yyyy}-{MM}-{dd} {hh}:{mm}:{ss}'}}</td>

答案 3 :(得分:1)

看看这个包swag,它提供了许多有用的把手助手。

查看其日期/时间助手:https://github.com/elving/swag#dates

您可以像以下一样格式化日期/时间:

var date = new Date()


{{formatDate date "%m/%d/%Y"}}
{{formatDate date "%I:%M%p"}}
{{formatDate date "%F"}}
{{formatDate date "%Y%m%dT%H%M%S%z"}}

07/26/2015
11:38PM
2015-08-28
20150828T233805-0004

答案 4 :(得分:0)