1

如何在模板内格式化时间戳?我遵循了一个关于建立聊天的教程,它可以工作。现在我扩展了聊天功能,例如删除消息并将时间放在消息前面。{{timestamp}}但是当我在模板中写入时,会给出一个 UNIX 时间戳。我如何格式化它以显示像“6:12”这样的时间。时间戳存储在 Messages 集合中。

是在内部操作时间戳的正确位置

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

功能?

提前致谢。

4

5 回答 5

4

虽然在这种情况下不是必需的,但我建议使用Moment.js,它使在 Javascript 中处理日期和时间变得轻而易举。

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

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

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

于 2012-09-11T13:32:19.793 回答
1

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

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

于 2012-09-30T14:07:36.773 回答
1

如果您想避免使用库并使用 Javascript Date 对象进行操作,我建议(假设日期采用 ISO 格式 2010-06-15T00:00:00,您可以从 Date.toISOString() 获取):

实现 format 方法(感谢JavaScript 等价于 printf/string.format),把它放在 ie 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>
于 2013-01-18T12:10:46.297 回答
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
于 2015-08-28T05:01:33.580 回答
0

看看Template helpersJavaScript Date object

于 2012-09-11T05:05:53.043 回答